annotate src/gtkconv.c @ 8448:ebb160ec42af

[gaim-migrate @ 9178] Another rad patch from SimGuy: This patch adds the proper check in to prevent users from sending blank lines, even if they contain markup. It also seems to resolve the problem where in ICQ and MSN, you can't send a smiley if it's alone on a line. I'm not sure why this is fixed so it might have been a coincidence. I took the opportunity to clean up the send_cb function, so it's got some deprecated and/or commented code removed. And hey, if you open an empty conv with someone and click the bold button and then hit enter it gives you a gtk warning. Somebody fix that. Gtk: file gtktextbuffer.c: line 1794 (gtk_text_buffer_get_iter_at_mark): assertion `GTK_IS_TEXT_MARK (mark)' failed committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Mon, 15 Mar 2004 01:44:39 +0000
parents 3d0178c4f390
children 5f8d4ab6d375
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>
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
38 #include <locale.h>
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
39
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
40 #include "debug.h"
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
41 #include "imgstore.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
42 #include "log.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
43 #include "multi.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"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
54 #include "gtkimhtml.h"
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
55 #include "gtkimhtmltoolbar.h"
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
56 #include "gtklog.h"
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
57 #include "gtkpounce.h"
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
58 #include "gtkprivacy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
59 #include "gtkutils.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
60 #include "stock.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
61
5717
1d140b31d4b3 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
62 #include "ui.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
63
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
64 /* XXX */
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
65 #include "gaim.h"
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
67 #define AUTO_RESPONSE "&lt;AUTO-REPLY&gt; : "
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
68
7990
10c7cd1d4e17 [gaim-migrate @ 8667]
Nathan Walp <nwalp@pidgin.im>
parents: 7988
diff changeset
69 #define SEND_COLOR "#16569E"
7855
a3c9d0a1658e [gaim-migrate @ 8509]
Sean Egan <seanegan@gmail.com>
parents: 7854
diff changeset
70 #define RECV_COLOR "#A82F2F"
7854
1e8322fc19b5 [gaim-migrate @ 8508]
Sean Egan <seanegan@gmail.com>
parents: 7853
diff changeset
71
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 static char nick_colors[][8] = {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 "#ba55d3", /* Medium Orchid */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 "#ee82ee", /* Violet */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 "#c715b4", /* Medium Violet Red */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76 "#ff69b4", /* Hot Pink */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77 "#ff6347", /* Tomato */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 "#fa8c00", /* Dark Orange */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 "#fa8072", /* Salmon */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 "#b22222", /* Fire Brick */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 "#f4a460", /* Sandy Brown */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 "#cd5c5c", /* Indian Red */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 "#bc8f8f", /* Rosy Brown */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 "#f0e68c", /* Khaki */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 "#bdb76b", /* Dark Khaki */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 "#228b22", /* Forest Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 "#9acd32", /* Yellow Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88 "#32cd32", /* Lime Green */
7755
8ebd9038ef62 [gaim-migrate @ 8400]
Mark Doliner <mark@kingant.net>
parents: 7751
diff changeset
89 "#3cb371", /* Medium Sea Green (Medium Sea Green?! What are we women?!) */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90 "#2e8b57", /* Sea Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91 "#8fbc8f", /* Dark Sea Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 "#66cdaa", /* Medium Aquamarine */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 "#5f9ea0", /* Cadet Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 "#48d1cc", /* Medium Turquoise */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 "#00ced1", /* Dark Turquoise */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 "#4682b4", /* Stell Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97 "#00bfff", /* Deep Sky Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 "#1690ff", /* Dodger Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 "#4169ff", /* Royal Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
100 "#6a5acd", /* Slate Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101 "#6495ed", /* Cornflower Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 "#708090", /* Slate gray */
7995
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
103 "#2f4f4f", /* Dark Slate Gray */
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
104 "#ff8c00", /* Dark Orange */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
105 };
6291
9287c2897a07 [gaim-migrate @ 6790]
Luke Schierer <lschiere@pidgin.im>
parents: 6244
diff changeset
106
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
107 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109 #define SCALE(x) \
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 ((gdk_pixbuf_animation_get_width(x) <= 48 && \
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111 gdk_pixbuf_animation_get_height(x) <= 48) ? 48 : 50)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
113 typedef struct
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115 GtkWidget *window;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117 GtkWidget *entry;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118 GtkWidget *message;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
119
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
120 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
121
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
122 } InviteBuddyInfo;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
124 static GtkWidget *invite_dialog = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
126 /* Prototypes. <-- because Paco-Paco hates this comment. */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
127 static void got_typing_keypress(GaimConversation *conv, gboolean first);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
128 static GList *generate_invite_user_names(GaimConnection *gc);
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
129 static void add_chat_buddy_common(GaimConversation *conv,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130 const char *name, int pos);
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
131 static void tab_complete(GaimConversation *conv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
132 static void update_typing_icon(GaimConversation *conv);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
133 static gboolean update_send_as_selection(GaimConvWindow *win);
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
134 static char *item_factory_translate_func (const char *path, gpointer func_data);
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
135 static void save_convo(GtkWidget *save, GaimConversation *c);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136
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 * Callbacks
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140 static void
6038
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
141 do_save_convo(GtkWidget *wid)
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
142 {
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
143 GaimConversation *conv;
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
144 const char *filename;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
145 FILE *fp;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
146
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
147 conv = g_object_get_data(G_OBJECT(GTK_FILE_SELECTION(wid)->ok_button),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
148 "gaim_conversation");
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
149
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
150 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
151
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
152 if (!((gaim_conversation_get_type(conv) != GAIM_CONV_CHAT &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
153 g_list_find(gaim_get_ims(), conv)) ||
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
154 (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
155 g_list_find(gaim_get_chats(), conv))))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
156 filename = NULL;
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
157
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
158 gtk_widget_destroy(wid);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
159
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
160 if (filename == NULL)
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
161 return;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
162
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
163 if ((fp = fopen(filename, "w+")) == NULL)
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
164 return;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
165
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
166 fprintf(fp, "%s", conv->history->str);
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
167
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
168 fclose(fp);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
169 }
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
170
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
171 static void
6038
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
172 do_check_save_convo(GObject *obj, GtkWidget *wid)
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
173 {
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
174 const char *filename;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
175
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
176 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
6038
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
177
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
178 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid)))
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
179 return;
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
180
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
181 if (g_file_test(filename, G_FILE_TEST_EXISTS))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
182 {
6038
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
183 gaim_request_yes_no(NULL, NULL, _("That file already exists"),
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
184 _("Would you like to overwrite it?"), 1, wid,
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
185 G_CALLBACK(do_save_convo), NULL);
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
186 }
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
187 else
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
188 do_save_convo(wid);
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
189 }
6485
70d5122bc3ff [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6460
diff changeset
190
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
192 static gint
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
193 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
194 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
195 GaimConvWindow *win = (GaimConvWindow *)d;
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
196
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
197 gaim_conv_window_destroy(win);
4361
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
198
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
199 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
200 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
201
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
202 static gint
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
203 close_conv_cb(GtkWidget *w, gpointer d)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
205 GaimConversation *conv = (GaimConversation *)d;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
207 gaim_conversation_destroy(conv);
4361
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
208
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
209 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
210 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211
7446
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
212 /* Courtesy of Galeon! */
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
213 static void
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
214 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state)
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
215 {
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
216 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE)
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
217 gtk_widget_set_state(widget, GTK_STATE_NORMAL);
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
218 }
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
219
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
220 static void
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
221 default_formatize(GaimConversation *conv)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
222 {
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
223 GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
224 GaimConnection *gc = gaim_conversation_get_gc(conv);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
225
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
226 if (gc && gc->flags & GAIM_CONNECTION_HTML)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
227 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
228 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold"))
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
229 gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
230
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
231 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic"))
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
232 gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
233
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
234 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline"))
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
235 gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
236
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
237 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_strikethrough"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
238 {
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
239 /* Tell me noone uses <s> by default ... maybe I won't do
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
240 _toggle_strikethrough and not let them */
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
241 /* g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
242 strcpy(buf, buf2); */
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
243 }
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
244
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
245 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") ||
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
246 c->has_font)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
247 {
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
248 gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry), c->fontface);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
249 }
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
250
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
251 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
252 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
253 gtk_imhtml_font_set_size(GTK_IMHTML(c->entry),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
254 gaim_prefs_get_int("/gaim/gtk/conversations/font_size"));
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
255 }
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
256
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
257 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
258 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
259 char *color = g_strdup_printf("#%02x%02x%02x",
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
260 c->fg_color.red / 256,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
261 c->fg_color.green / 256,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
262 c->fg_color.blue / 256);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
263 gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
264 g_free(color);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
265 }
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
266
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
267 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
268 gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
269 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
270 char *color = g_strdup_printf("#%02x%02x%02x",
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
271 c->bg_color.red / 256,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
272 c->bg_color.green / 256,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
273 c->bg_color.blue / 256);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
274 gtk_imhtml_toggle_backcolor(GTK_IMHTML(c->entry), color);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
275 g_free(color);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
276 }
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
277 }
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
278 }
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
279
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
281 send_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
283 GaimGtkConversation *gtkconv;
8448
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
284 char *buf, *clean;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
285
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
286 gtkconv = GAIM_GTK_CONVERSATION(conv);
8329
9dd7c75ed433 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
287
8442
3d0178c4f390 [gaim-migrate @ 9172]
Luke Schierer <lschiere@pidgin.im>
parents: 8439
diff changeset
288 buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
8448
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
289 clean = gaim_markup_strip_html(buf);
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
290
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
292
8448
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
293 if (strlen(clean) == 0) {
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
294 g_free(clean);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
295 g_free(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
296 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
297 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
298
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
299 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
300 gaim_conv_im_send(GAIM_CONV_IM(conv), buf);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
301 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
302 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
303
5629
e2ff6f156917 [gaim-migrate @ 6036]
Nathan Walp <nwalp@pidgin.im>
parents: 5582
diff changeset
304 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
305 gaim_conv_window_hide(gaim_conversation_get_window(conv));
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
306
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
307 g_free(buf);
8448
ebb160ec42af [gaim-migrate @ 9178]
Mark Doliner <mark@kingant.net>
parents: 8442
diff changeset
308 g_free(clean);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
309
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
310 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
311 default_formatize(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
312 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
313
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314 static void
7928
dca50d465b7d [gaim-migrate @ 8599]
Mark Doliner <mark@kingant.net>
parents: 7927
diff changeset
315 add_remove_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
316 {
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
317 GaimAccount *account;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
318 const char *name;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
319
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
320 account = gaim_conversation_get_account(conv);
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
321 name = gaim_conversation_get_name(conv);
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
322
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
323 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
324 GaimBuddy *b;
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
325
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
326 b = gaim_find_buddy(account, name);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
327 if (b != NULL)
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
328 show_confirm_del(b);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
329 else if (account != NULL && gaim_account_is_connected(account))
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
330 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL);
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
331 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
332 GaimChat *c;
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
333
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
334 c = gaim_blist_find_chat(account, name);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
335 if (c != NULL)
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
336 show_confirm_del_blist_chat(c);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
337 else if (account != NULL && gaim_account_is_connected(account))
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
338 gaim_blist_request_add_chat(account, NULL, NULL);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
339 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
340
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
341 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
342 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
343
7975
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
344 static void chat_do_info(GaimConversation *conv, const char *who)
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
345 {
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
346 GaimPluginProtocolInfo *prpl_info = NULL;
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
347 GaimConnection *gc;
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
348
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
349 if ((gc = gaim_conversation_get_gc(conv))) {
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
350 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
351
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
352 /*
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
353 * If there are special needs for getting info on users in
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
354 * buddy chat "rooms"...
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
355 */
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
356 if (prpl_info->get_cb_info != NULL)
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
357 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
358 prpl_info->get_cb_info(gc,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
359 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
360 }
7975
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
361 else
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
362 prpl_info->get_info(gc, who);
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
363 }
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
364 }
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
365
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
366
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
367 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
368 info_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
369 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
370 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
371
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
372 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
373
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
374 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
375 serv_get_info(gaim_conversation_get_gc(conv),
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
376 gaim_conversation_get_name(conv));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
377
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
378 gtk_widget_grab_focus(gtkconv->entry);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
379 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
380 /* Get info of the person currently selected in the GtkTreeView */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
381 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
382 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
383 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 GtkTreeSelection *sel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385 const char *name;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
386
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
387 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
388
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
389 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
390 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
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 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
393 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
394 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
395 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
396
7975
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
397 chat_do_info(conv, name);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
398 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
399 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
400
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
401 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
402 warn_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
403 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
404 show_warn_dialog(gaim_conversation_get_gc(conv),
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
405 gaim_conversation_get_name(conv));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
406
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
407 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
408 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
409
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
410 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
411 block_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
412 {
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
413 GaimAccount *account;
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
414
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
415 account = gaim_conversation_get_account(conv);
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
416
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
417 if (account != NULL && gaim_account_is_connected(account))
6399
d726a36628e8 [gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents: 6398
diff changeset
418 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
419
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
420 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
421 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
422
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
423 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
424 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
425 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
426 const char *buddy, *message;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
427 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
428
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
429 gtkconv = GAIM_GTK_CONVERSATION(info->conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
430
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
431 if (resp == GTK_RESPONSE_OK) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
432 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
433 message = gtk_entry_get_text(GTK_ENTRY(info->message));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
434
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
435 if (!g_ascii_strcasecmp(buddy, "")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
436 g_free(info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
437
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
438 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
439 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
440
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
441 serv_chat_invite(gaim_conversation_get_gc(info->conv),
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
442 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)),
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
443 message, buddy);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
444 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
445
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
446 gtk_widget_destroy(invite_dialog);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
447 invite_dialog = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
448
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
449 g_free(info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
450 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
451
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
452 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
453 invite_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
454 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
455 InviteBuddyInfo *info = NULL;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
456
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
457 if (invite_dialog == NULL) {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
458 GaimConnection *gc;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
459 GaimConvWindow *win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
460 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
461 GtkWidget *label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
462 GtkWidget *vbox, *hbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
463 GtkWidget *table;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
464 GtkWidget *img;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
465
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
466 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
467 GTK_ICON_SIZE_DIALOG);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
468
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
469 info = g_new0(InviteBuddyInfo, 1);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
470 info->conv = conv;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
471
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
472 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
473 win = gaim_conversation_get_window(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
474 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
475
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
476 /* Create the new dialog. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
477 invite_dialog = gtk_dialog_new_with_buttons(
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
478 _("Invite Buddy Into Chat Room"),
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
479 GTK_WINDOW(gtkwin->window), 0,
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
480 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
481 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
482
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
483 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
484 GTK_RESPONSE_OK);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
485 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
486 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
487 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
488
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
489 /* Setup the outside spacing. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
490 vbox = GTK_DIALOG(invite_dialog)->vbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
491
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
492 gtk_box_set_spacing(GTK_BOX(vbox), 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
493 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
494
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
495 /* Setup the inner hbox and put the dialog's icon in it. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
496 hbox = gtk_hbox_new(FALSE, 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
497 gtk_container_add(GTK_CONTAINER(vbox), hbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
498 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
499 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
500
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
501 /* Setup the right vbox. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
502 vbox = gtk_vbox_new(FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
503 gtk_container_add(GTK_CONTAINER(hbox), vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
504
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
505 /* Put our happy label in it. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
506 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
507 "to invite, along with an optional invite "
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
508 "message."));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
509 gtk_widget_set_size_request(label, 350, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
510 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
511 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
512 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
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 /* 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
515 hbox = gtk_hbox_new(FALSE, 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
516 gtk_container_add(GTK_CONTAINER(vbox), hbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
517
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
518 /* Setup the table we're going to use to lay stuff out. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519 table = gtk_table_new(2, 2, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
520 gtk_table_set_row_spacings(GTK_TABLE(table), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
521 gtk_table_set_col_spacings(GTK_TABLE(table), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
522 gtk_container_set_border_width(GTK_CONTAINER(table), 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
523 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
524
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
525 /* Now the Buddy label */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
526 label = gtk_label_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
527 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
528 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
529 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
530
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
531 /* Now the Buddy drop-down entry field. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
532 info->entry = gtk_combo_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
533 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
534 gtk_entry_set_activates_default(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
535 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
536
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
537 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
538 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
539
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
540 /* Fill in the names. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
542 generate_invite_user_names(gc));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
544
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
545 /* Now the label for "Message" */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
546 label = gtk_label_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
547 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
548 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
549 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
550
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
551
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
552 /* And finally, the Message entry field. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
553 info->message = gtk_entry_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
554 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
555
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
556 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
557 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
558
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
559 /* Connect the signals. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
560 g_signal_connect(G_OBJECT(invite_dialog), "response",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
561 G_CALLBACK(do_invite), info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
562 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
563
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
564 gtk_widget_show_all(invite_dialog);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
565
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
566 if (info != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
567 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
568 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
569
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
570 static void
7748
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
571 menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget)
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
572 {
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
573 show_im_dialog();
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
574 }
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
575
8165ab2a00e6 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
576 static void
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
577 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
578 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
579 GaimConvWindow *win = (GaimConvWindow *)data;
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
580
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
581 save_convo(NULL, gaim_conv_window_get_active_conversation(win));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
582 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
583
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
584 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
585 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
586 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
587 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
588 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
589
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
590 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
591
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
592 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
593 gaim_conversation_get_account(conv));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
594 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
595
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
596 struct _search {
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
597 GaimGtkConversation *gtkconv;
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
598 GtkWidget *entry;
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
599 };
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
600
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
601 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
602 {
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
603 switch (resp) {
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
604 case GTK_RESPONSE_OK:
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
605 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
606 gtk_entry_get_text(GTK_ENTRY(s->entry)));
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
607 break;
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
608
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
609 case GTK_RESPONSE_DELETE_EVENT:
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
610 case GTK_RESPONSE_CLOSE:
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
611 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml));
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
612 gtk_widget_destroy(s->gtkconv->dialogs.search);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
613 s->gtkconv->dialogs.search = NULL;
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
614 g_free(s);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
615 break;
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
616 }
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
617 }
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
618
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
619 static void
7751
d691cb95ee67 [gaim-migrate @ 8396]
Mark Doliner <mark@kingant.net>
parents: 7748
diff changeset
620 menu_find_cb(gpointer data, guint action, GtkWidget *widget)
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
621 {
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
622 GaimConvWindow *win = (GaimConvWindow *)data;
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
623 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
624 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
625 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
626 GtkWidget *hbox;
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
627 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
628 GTK_ICON_SIZE_DIALOG);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
629 GtkWidget *label;
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
630 struct _search *s;
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
631
7798
824add06abde [gaim-migrate @ 8444]
Mark Doliner <mark@kingant.net>
parents: 7778
diff changeset
632 if (gtkconv->dialogs.search) {
824add06abde [gaim-migrate @ 8444]
Mark Doliner <mark@kingant.net>
parents: 7778
diff changeset
633 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search));
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
634 return;
7798
824add06abde [gaim-migrate @ 8444]
Mark Doliner <mark@kingant.net>
parents: 7778
diff changeset
635 }
7300
41bbe5534441 [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
636
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
637 s = g_malloc(sizeof(struct _search));
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
638 s->gtkconv = gtkconv;
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
639
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
640 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"),
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
641 GTK_WINDOW(gtkwin->window), GTK_DIALOG_DESTROY_WITH_PARENT,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
642 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
643 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
644 gtk_dialog_set_default_response(GTK_DIALOG(gtkconv->dialogs.search),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
645 GTK_RESPONSE_OK);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
646 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
647 G_CALLBACK(do_search_cb), s);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
648
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
649 gtk_container_set_border_width(GTK_CONTAINER(gtkconv->dialogs.search), 6);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
650 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
651 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
652 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
653 gtk_container_set_border_width(
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
654 GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
655
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
656 hbox = gtk_hbox_new(FALSE, 12);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
657 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
658 hbox);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
659 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
660
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
661 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
662 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
663 GTK_RESPONSE_OK, FALSE);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
664
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
665 label = gtk_label_new(NULL);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
666 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
667 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
668
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
669 s->entry = gtk_entry_new();
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
670 gtk_entry_set_activates_default(GTK_ENTRY(s->entry), TRUE);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
671 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
672 g_signal_connect(G_OBJECT(s->entry), "changed",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
673 G_CALLBACK(gaim_gtk_set_sensitive_if_input),
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
674 gtkconv->dialogs.search);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
675 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
676
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
677 gtk_widget_show_all(gtkconv->dialogs.search);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
678 gtk_widget_grab_focus(s->entry);
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
679 }
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
680
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
681 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
682 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
683 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
684 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
685 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
686
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
687 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
688
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
689 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
690 gaim_conversation_get_name(conv), NULL);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
691 }
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
692
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
693 #if 0
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
694 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
695 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
696 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
697 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
698 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
699 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
700
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
701 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
702 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
703
7927
1441648fe974 [gaim-migrate @ 8598]
Mark Doliner <mark@kingant.net>
parents: 7906
diff changeset
704 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link),
1441648fe974 [gaim-migrate @ 8598]
Mark Doliner <mark@kingant.net>
parents: 7906
diff changeset
705 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link)));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
706 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
707
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
708 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
709 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
710 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
711 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
712 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
713
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
714 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
715
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
716 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
717 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image)));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
718 }
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
719 #endif
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
720
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
721 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
722 menu_alias_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
723 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
724 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
725 GaimConversation *conv;
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
726 GaimAccount *account;
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
727 const char *name;
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
728
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
729 conv = gaim_conv_window_get_active_conversation(win);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
730 account = gaim_conversation_get_account(conv);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
731 name = gaim_conversation_get_name(conv);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
732
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
733 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
734 GaimBuddy *b;
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
735
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
736 b = gaim_find_buddy(account, name);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
737 if (b != NULL)
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
738 alias_dialog_bud(b);
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
739 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
740 GaimChat *c;
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
741
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
742 c = gaim_blist_find_chat(account, name);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
743 if (c != NULL)
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
744 alias_dialog_blist_chat(c);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
745 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
746 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
747
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
748 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
749 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
750 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
751 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
752 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
753
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
754 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
755
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
756 info_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
757 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
758
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
759 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
760 menu_invite_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
761 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
762 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
763 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
764
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
765 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
766
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
767 invite_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
768 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
769
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
770 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
771 menu_warn_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
772 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
773 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
774 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
775
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
776 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
777
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
778 warn_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
779 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
780
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
781 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
782 menu_block_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
783 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
784 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
785 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
786
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
787 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
788
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
789 block_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
790 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
791
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
792 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
793 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
794 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
795 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
796 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
797
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
798 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
799
7928
dca50d465b7d [gaim-migrate @ 8599]
Mark Doliner <mark@kingant.net>
parents: 7927
diff changeset
800 add_remove_cb(NULL, conv);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
801 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
802
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
803 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
804 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
805 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
806 GaimConvWindow *win = (GaimConvWindow *)data;
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
807
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
808 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
809 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
810
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
811 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
812 menu_logging_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
813 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
814 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
815 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
816
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
817 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
818
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
819 if (conv == NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
820 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
821
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
822 gaim_conversation_set_logging(conv,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
823 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
824 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
825
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
826 static void
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
827 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget)
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
828 {
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
829 GaimConvWindow *win = (GaimConvWindow *)data;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
830 GaimConversation *conv;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
831 GaimGtkConversation *gtkconv;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
832
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
833 conv = gaim_conv_window_get_active_conversation(win);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
834
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
835 if (conv == NULL)
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
836 return;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
837
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
838 gtkconv = GAIM_GTK_CONVERSATION(conv);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
839
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
840 gtkconv->show_formatting_toolbar =
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
841 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
842
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
843 if (gtkconv->show_formatting_toolbar)
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
844 gtk_widget_show(gtkconv->toolbar);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
845 else
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
846 gtk_widget_hide(gtkconv->toolbar);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
847 }
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
848
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
849 static void
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
850 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
851 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
852 GaimConvWindow *win = (GaimConvWindow *)data;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
853 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
854 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
855
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
856 conv = gaim_conv_window_get_active_conversation(win);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
857
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
858 if (!conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
859 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
860
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
861 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
862
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
863 gtkconv->make_sound =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
864 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
865 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
866
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
867 static void
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
868 chat_do_im(GaimConversation *conv, const char *who)
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
869 {
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
870 GaimPluginProtocolInfo *prpl_info = NULL;
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
871 char *real_who;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
872 GaimConversation *conv2;
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
873 GaimAccount *account;
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
874
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
875 account = gaim_conversation_get_account(conv);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
876
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
877 if(account && account->gc)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
878 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
879
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
880 if(prpl_info && prpl_info->get_cb_real_name)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
881 real_who = prpl_info->get_cb_real_name(account->gc,
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
882 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
883 else
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
884 real_who = g_strdup(who);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
885
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
886 if(!real_who)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
887 return;
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
888
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
889 conv2 = gaim_find_conversation_with_account(real_who, account);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
890
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
891 if (conv2 != NULL)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
892 gaim_conv_window_show(gaim_conversation_get_window(conv2));
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
893 else
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
894 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
895
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
896 g_free(real_who);
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
897 }
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
898
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
899
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
900 static void
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
901 chat_im_button_cb(GtkWidget *widget, GaimConversation *conv)
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
902 {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
903 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
904 GaimGtkChatPane *gtkchat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
905 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
906 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
907 GtkTreeSelection *sel;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
908 const char *name;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
909
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
910 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
911 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
912
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
913 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
914 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
915
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
916 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
917 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
918 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
919 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
920
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
921 chat_do_im(conv, name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
922 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
923
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
924 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
925 ignore_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
926 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
927 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
928 GaimGtkChatPane *gtkchat;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
929 GaimConvChat *chat;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
930 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
931 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
932 GtkTreeSelection *sel;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
933 const char *name;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
934 int pos;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
935
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
936 chat = GAIM_CONV_CHAT(conv);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
937 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
938 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
939
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
940 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
941 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
942
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
943 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
944 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
945 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
946 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
947 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
948 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
949
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
950 pos = g_list_index(gaim_conv_chat_get_users(chat), name);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
951
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
952 if (gaim_conv_chat_is_user_ignored(chat, name))
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
953 gaim_conv_chat_unignore(chat, name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
954 else
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
955 gaim_conv_chat_ignore(chat, name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
956
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
957 add_chat_buddy_common(conv, name, pos);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
958 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
959
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
960 static void
7398
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
961 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv)
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
962 {
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
963 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
964
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
965 chat_do_im(conv, who);
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_chat_info_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
970 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
971 char *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
972
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
973 who = g_object_get_data(G_OBJECT(w), "user_data");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
974
7975
2311532f9036 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
975 chat_do_info(conv, who);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
976 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
977
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
978 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
979 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
980 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
981 GaimPluginProtocolInfo *prpl_info = NULL;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
982 GaimConnection *gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
983 char *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
984
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
985 gc = gaim_conversation_get_gc(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
986 who = g_object_get_data(G_OBJECT(w), "user_data");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
987
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
988 if (gc != NULL) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
989 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
990
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
991 /*
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
992 * 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
993 */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
994
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
995 if (prpl_info->get_cb_away != NULL)
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
996 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
997 prpl_info->get_cb_away(gc,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
998 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
999 }
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1000 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1001 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1002
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1003 static void
7928
dca50d465b7d [gaim-migrate @ 8599]
Mark Doliner <mark@kingant.net>
parents: 7927
diff changeset
1004 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv)
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1005 {
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1006 GaimAccount *account;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1007 GaimBuddy *b;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1008 char *name;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1009
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1010 account = gaim_conversation_get_account(conv);
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1011 name = g_object_get_data(G_OBJECT(w), "user_data");
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1012 b = gaim_find_buddy(account, name);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1013
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1014 if (b != NULL)
5975
80e5258226f3 [gaim-migrate @ 6422]
Mark Doliner <mark@kingant.net>
parents: 5966
diff changeset
1015 show_confirm_del(b);
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1016 else if (account != NULL && gaim_account_is_connected(account))
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1017 gaim_blist_request_add_buddy(account, name, NULL, NULL);
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 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
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
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1022 static GtkWidget *
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1023 create_chat_menu(GaimConversation *conv, gchar *who,
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1024 GaimPluginProtocolInfo *prpl_info, GaimConnection *gc)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1025 {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1026 static GtkWidget *menu = NULL;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1027 GtkWidget *button;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1028
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1029 /*
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1030 * 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
1031 * thus freeing-up the memory it occupied.
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1032 */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1033 if (menu)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1034 gtk_widget_destroy(menu);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1035
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1036 menu = gtk_menu_new();
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1037
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1038 button = gtk_menu_item_new_with_label(_("IM"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1039 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1040 G_CALLBACK(menu_chat_im_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1041 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1042 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1043 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1044
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1045 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
1046 button = gtk_menu_item_new_with_label(_("Un-Ignore"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1047 else
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1048 button = gtk_menu_item_new_with_label(_("Ignore"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1049
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1050 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1051 G_CALLBACK(ignore_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1052 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1053 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1054 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1055
8170
9d1a984681fe [gaim-migrate @ 8883]
Nathan Walp <nwalp@pidgin.im>
parents: 8159
diff changeset
1056 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
1057 button = gtk_menu_item_new_with_label(_("Info"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1058 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1059 G_CALLBACK(menu_chat_info_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1060 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1061 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1062 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1063 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1064
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1065 if (gc && prpl_info->get_cb_away) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1066 button = gtk_menu_item_new_with_label(_("Get Away Msg"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1067 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1068 G_CALLBACK(menu_chat_get_away_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1069 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1070 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1071 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1072 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1073
8170
9d1a984681fe [gaim-migrate @ 8883]
Nathan Walp <nwalp@pidgin.im>
parents: 8159
diff changeset
1074 /* 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
1075 /* Added by Jonas <jonas@birme.se> */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1076 if (gc) {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1077 if (gaim_find_buddy(gc->account, who))
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1078 button = gtk_menu_item_new_with_label(_("Remove"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1079 else
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1080 button = gtk_menu_item_new_with_label(_("Add"));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1081
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1082 g_signal_connect(G_OBJECT(button), "activate",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1083 G_CALLBACK(menu_chat_add_remove_cb), conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1084
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1085 g_object_set_data(G_OBJECT(button), "user_data", who);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1086 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1087 gtk_widget_show(button);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1088 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1089 /* End Jonas */
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1090
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1091 return menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1092 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1093
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1094
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1095 static gint
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1096 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimConversation *conv)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1097 {
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1098 GaimGtkConversation *gtkconv;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1099 GaimPluginProtocolInfo *prpl_info = NULL;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1100 GaimGtkChatPane *gtkchat;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1101 GaimConnection *gc;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1102 GaimAccount *account;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1103 GtkTreeSelection *sel;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1104 GtkTreeIter iter;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1105 GtkTreeModel *model;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1106 GtkWidget *menu;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1107 gchar *who;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1108
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1109 gtkconv = GAIM_GTK_CONVERSATION(conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1110 gtkchat = gtkconv->u.chat;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1111 account = gaim_conversation_get_account(conv);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1112 gc = account->gc;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1113
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1114 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1115
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1116 if (gc != NULL)
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1117 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1118
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1119 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1120 if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1121 return FALSE;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1122
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1123 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1124 menu = create_chat_menu (conv, who, prpl_info, gc);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1125 gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1126 gaim_gtk_treeview_popup_menu_position_func, widget,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1127 0, GDK_CURRENT_TIME);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1128
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1129 return TRUE;
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1130 }
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1131
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1132
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1133 static gint
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1134 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1135 GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1136 {
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1137 GaimGtkConversation *gtkconv;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1138 GaimPluginProtocolInfo *prpl_info = NULL;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1139 GaimGtkChatPane *gtkchat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1140 GaimConnection *gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1141 GaimAccount *account;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1142 GtkTreePath *path;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1143 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1144 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1145 GtkTreeViewColumn *column;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1146 gchar *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1147 int x, y;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1148
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1149 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1150 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1151 account = gaim_conversation_get_account(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1152 gc = account->gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1153
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1154 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1155
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1156 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
1157 event->x, event->y, &path, &column, &x, &y);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1158
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1159 if (path == NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1160 return FALSE;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1161
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1162 if (gc != NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1163 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1164
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1165 gtk_tree_selection_select_path(GTK_TREE_SELECTION(
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1166 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1167
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1168 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1169 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1170
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1171 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
7398
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1172 chat_do_im(conv, who);
d60e1629ffde [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1173 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1174 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1175 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1176 event->button, event->time);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1177 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1178
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1179 return TRUE;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1180 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1181
8133
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1182 static void
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1183 move_to_next_unread_tab(GaimConversation *conv)
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1184 {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1185 GaimConversation *next_conv = NULL;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1186 GaimConvWindow *win;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1187 GList *l;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1188 int index, i;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1189
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1190 win = gaim_conversation_get_window(conv);
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1191 index = gaim_conversation_get_index(conv);
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1192
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1193 /* First check the tabs after this position. */
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1194 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
1195 l != NULL;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1196 l = l->next) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1197
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1198 next_conv = (GaimConversation *)l->data;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1199
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1200 if (gaim_conversation_get_unseen(next_conv) > 0)
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1201 break;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1202
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1203 next_conv = NULL;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1204 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1205
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1206 if (next_conv == NULL) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1207
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1208 /* Now check before this position. */
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1209 for (l = gaim_conv_window_get_conversations(win), i = 0;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1210 l != NULL && i < index;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1211 l = l->next) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1212
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1213 next_conv = (GaimConversation *)l->data;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1214
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1215 if (gaim_conversation_get_unseen(next_conv) > 0)
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1216 break;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1217
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1218 next_conv = NULL;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1219 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1220
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1221 if (next_conv == NULL) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1222 /* Okay, just grab the next conversation tab. */
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1223 if (index == gaim_conv_window_get_conversation_count(win) - 1)
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1224 next_conv = gaim_conv_window_get_conversation_at(win, 0);
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1225 else
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1226 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1227 next_conv = gaim_conv_window_get_conversation_at(win,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1228 index + 1);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1229 }
8133
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1230 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1231 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1232
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1233 if (next_conv != NULL && next_conv != conv) {
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1234 gaim_conv_window_switch_conversation(win,
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1235 gaim_conversation_get_index(next_conv));
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1236 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1237 }
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1238
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1239 static gboolean
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1240 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1241 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1242 GaimConvWindow *win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1243 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1244 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1245 GaimGtkWindow *gtkwin;
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1246 int numconvs;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1247 int curconv;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1248
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1249 conv = (GaimConversation *)data;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1250 gtkconv = GAIM_GTK_CONVERSATION(conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1251 win = gaim_conversation_get_window(conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1252 gtkwin = GAIM_GTK_WINDOW(win);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1253 numconvs = gaim_conv_window_get_conversation_count(win);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1254 curconv = gaim_conversation_get_index(conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1255
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1256 /* If CTRL was held down... */
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1257 if (event->state & GDK_CONTROL_MASK) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1258 switch (event->keyval) {
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1259 case GDK_Return:
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1260 case GDK_KP_Enter:
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1261 if (gaim_prefs_get_bool(
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1262 "/gaim/gtk/conversations/ctrl_enter_sends"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1263 {
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1264 send_cb(NULL, conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1265
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1266 return TRUE;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1267 }
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1268 break;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1269
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1270 case GDK_Up:
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1271 if (!conv->send_history)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1272 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1273
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1274 if (!conv->send_history->prev) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1275 GtkTextIter start, end;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1276
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1277 if (conv->send_history->data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1278 g_free(conv->send_history->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1279
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1280 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1281 &start);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1282 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1283
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1284 conv->send_history->data =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1285 gtk_text_buffer_get_text(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1286 &start, &end, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1287 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1288
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1289 if (conv->send_history->next &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1290 conv->send_history->next->data) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1291
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1292 conv->send_history = conv->send_history->next;
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
1293 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1294 gtk_imhtml_append_text_with_images(
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1295 GTK_IMHTML(gtkconv->entry), conv->send_history->data,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1296 0, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1297 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1298
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1299 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1300 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1301
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1302 case GDK_Down:
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1303 if (!conv->send_history)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1304 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1305
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1306 if (conv->send_history->prev &&
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1307 conv->send_history->prev->data) {
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1308
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1309 conv->send_history = conv->send_history->prev;
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1310 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1311 gtk_imhtml_append_text_with_images(
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1312 GTK_IMHTML(gtkconv->entry), conv->send_history->data,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1313 0, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1314 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1315
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1316 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1317 break;
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1318
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1319 case GDK_Page_Down:
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1320 case ']':
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1321 gaim_conv_window_switch_conversation(win,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1322 (curconv + 1) % numconvs);
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1323
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1324 return TRUE;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1325 break;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1326
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1327 case GDK_Page_Up:
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
1328 case '[':
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1329 gaim_conv_window_switch_conversation(win,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1330 (curconv + numconvs - 1) % numconvs);
8133
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1331
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1332 return TRUE;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1333 break;
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1334
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1335 case GDK_Tab:
8133
7616ff76fe07 [gaim-migrate @ 8838]
Mark Doliner <mark@kingant.net>
parents: 8123
diff changeset
1336 move_to_next_unread_tab(conv);
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1337
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1338 return TRUE;
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1339 break;
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1340
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1341 case 'l':
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1342 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml));
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1343 g_string_free(conv->history, TRUE);
8229
a74ff5569c86 [gaim-migrate @ 8952]
Nathan Walp <nwalp@pidgin.im>
parents: 8228
diff changeset
1344 conv->history = NULL;
8108
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1345
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1346 return TRUE;
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1347 break;
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1348
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1349 case 'z':
24159041e8f4 [gaim-migrate @ 8809]
Mark Doliner <mark@kingant.net>
parents: 8106
diff changeset
1350 gtk_window_iconify(GTK_WINDOW(gtkwin->window));
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1351
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1352 return TRUE;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1353 break;
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1354
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1355 } /* End of switch */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1356
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1357 #if 0
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1358 if (gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1359 switch (event->keyval) {
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1360
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
1361
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1362 }
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1363 } /* End of switch */
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1364
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1365 if (gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1366 char buf[7];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1367
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1368 *buf = '\0';
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1369
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1370 switch (event->keyval) {
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1371
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1372 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1373
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1374
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1375 }
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1376 #endif
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1377
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1378 }
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1379 /* If ALT (or whatever) was held down... */
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1380 else if (event->state & GDK_MOD1_MASK)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1381 {
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1382 /* XXX - Make sure the conv exists befeore switching to it */
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1383 if (event->keyval > '0' && event->keyval <= '9') {
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1384 int switchto = event->keyval - '1';
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1385 if (switchto < numconvs)
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1386 gaim_conv_window_switch_conversation(win, switchto);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1387
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1388 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1389 }
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1390 }
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1391 /* If neither CTRL nor ALT were held down... */
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1392 else
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1393 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1394 switch (event->keyval)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1395 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1396 case GDK_Return:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1397 case GDK_KP_Enter:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1398 if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1399 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1400 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1401 send_cb(NULL, conv);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1402 return TRUE;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1403 }
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1404 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1405
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1406 case GDK_Tab:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1407 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1408 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/tab_completion"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1409 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1410 tab_complete(conv);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1411 return TRUE;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1412 }
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1413 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1414
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1415 case GDK_Page_Up:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1416 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml));
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1417 return TRUE;
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1418 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1419
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1420 case GDK_Page_Down:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1421 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml));
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1422 return TRUE;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1423 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1424
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1425 case GDK_F2:
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1426 gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps",
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1427 !gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1428 return TRUE;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1429 break;
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1430
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1431 }
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1432 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1433
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1434 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1435 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1436
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1437 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1438 * NOTE:
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1439 * 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
1440 * 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
1441 * 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
1442 * 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
1443 * GtkTextView, but I'm not ready to point any fingers yet.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1444 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1445 static gboolean
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1446 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1447 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1448 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1449 /* Right single click */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1450 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1451
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1452 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1453 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1454
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1455 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1456 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1457
8173
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1458 /*
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1459 * If someone tries to type into the conversation backlog of a
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1460 * conversation window then we yank focus from the conversation backlog
62936f62d98e [gaim-migrate @ 8887]
Mark Doliner <mark@kingant.net>
parents: 8172
diff changeset
1461 * 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
1462 * 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
1463 */
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1464 static gboolean
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
1465 refocus_entry_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1466 {
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1467 GaimGtkConversation *gtkconv = data;
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1468
8237
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1469 /* 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
1470 if ((event->state & GDK_CONTROL_MASK) ||
8237
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1471 (event->keyval == GDK_F10) ||
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1472 (event->keyval == GDK_Shift_L) ||
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1473 (event->keyval == GDK_Shift_R) ||
9200bee593e8 [gaim-migrate @ 8960]
Mark Doliner <mark@kingant.net>
parents: 8229
diff changeset
1474 (event->keyval == GDK_Escape) ||
8177
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1475 (event->keyval == GDK_Up) ||
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1476 (event->keyval == GDK_Down) ||
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1477 (event->keyval == GDK_Left) ||
8191
90a1fbd2493d [gaim-migrate @ 8912]
Mark Doliner <mark@kingant.net>
parents: 8189
diff changeset
1478 (event->keyval == GDK_Right) ||
90a1fbd2493d [gaim-migrate @ 8912]
Mark Doliner <mark@kingant.net>
parents: 8189
diff changeset
1479 (event->keyval == GDK_Home) ||
90a1fbd2493d [gaim-migrate @ 8912]
Mark Doliner <mark@kingant.net>
parents: 8189
diff changeset
1480 (event->keyval == GDK_End))
8177
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1481 return FALSE;
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1482
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1483 if (event->type == GDK_KEY_RELEASE)
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1484 gtk_widget_grab_focus(gtkconv->entry);
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1485
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1486 gtk_widget_event(gtkconv->entry, (GdkEvent *)event);
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1487
4e68644a47f6 [gaim-migrate @ 8891]
Mark Doliner <mark@kingant.net>
parents: 8176
diff changeset
1488 return TRUE;
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1489 }
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1490
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1491 static void
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
1492 menu_conv_sel_send_cb(GObject *m, gpointer data)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1493 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1494 GaimConvWindow *win = g_object_get_data(m, "user_data");
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
1495 GaimAccount *account = g_object_get_data(m, "gaim_account");
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1496 GaimConversation *conv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1497
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1498 conv = gaim_conv_window_get_active_conversation(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1499
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
1500 gaim_conversation_set_account(conv, account);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1501 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1502
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1503 static void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1504 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1505 gchar *new_text, gint new_text_length, gpointer user_data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1506 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1507 GaimConversation *conv = (GaimConversation *)user_data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1508
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1509 g_return_if_fail(conv != NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1510
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1511 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1512 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1513
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1514 got_typing_keypress(conv, (gtk_text_iter_is_start(position) &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1515 gtk_text_iter_is_end(position)));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1516 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1517
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1518 static void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1519 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1520 GtkTextIter *end_pos, gpointer user_data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1521 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1522 GaimConversation *conv = (GaimConversation *)user_data;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1523 GaimConvIm *im;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1524
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1525 g_return_if_fail(conv != NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1526
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1527 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1528 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1529
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1530 im = GAIM_CONV_IM(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1531
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1532 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
1533
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1534 /* We deleted all the text, so turn off typing. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1535 if (gaim_conv_im_get_type_again_timeout(im))
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1536 gaim_conv_im_stop_type_again_timeout(im);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1537
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1538 serv_send_typing(gaim_conversation_get_gc(conv),
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1539 gaim_conversation_get_name(conv),
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1540 GAIM_NOT_TYPING);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1541 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1542 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1543 /* 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
1544 got_typing_keypress(conv, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1545 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1546 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1547
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1548 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1549 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1550 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1551 static GdkCursor *cursor = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1552
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1553 gtkwin->in_drag = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1554
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1555 if (gtkwin->drag_leave_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1556 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1557 gtkwin->drag_leave_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1558
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1559 gtkwin->drag_leave_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1560 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1561
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1562 if (cursor == NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1563 cursor = gdk_cursor_new(GDK_FLEUR);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1564
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1565 /* Grab the pointer */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1566 gtk_grab_add(gtkwin->notebook);
5114
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1567 #ifndef _WIN32
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1568 /* 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
1569 always be true after a button press. */
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1570 if (!gdk_pointer_is_grabbed())
5114
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1571 #endif
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1572 gdk_pointer_grab(gtkwin->notebook->window, FALSE,
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1573 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1574 NULL, cursor, GDK_CURRENT_TIME);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1575 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1576
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1577 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1578 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1579 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1580 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1581
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1582 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1583
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 * Make sure the user moved the mouse far enough for the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1586 * drag to be initiated.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1587 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1588 if (gtkwin->in_predrag) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1589 if (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1590 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1591 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1592 e->y_root >= gtkwin->drag_max_y) {
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 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1595 notebook_init_grab(gtkwin, widget);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1596 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1597 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1598 else { /* Otherwise, draw the arrows. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1599 GaimConvWindow *dest_win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1600 GaimGtkWindow *dest_gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1601 GtkNotebook *dest_notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1602 GtkWidget *tab, *last_vis_tab = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1603 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
1604 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1605 gboolean horiz_tabs = FALSE, tab_found = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1606 GList *l;
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 /* Get the window that the cursor is over. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1609 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
1610
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1611 if (dest_win == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1612 dnd_hints_hide_all();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1613
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1614 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1615 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1616
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1617 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1618
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1619 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1620
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1621 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
1622
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1623 arrow1_x = arrow2_x = nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1624 arrow1_y = arrow2_y = nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1625
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1626 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1627 e->x_root, e->y_root);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1628
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1629 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1630 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1631
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1632 horiz_tabs = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1633 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1634
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1635 /* Find out where to put the arrows. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1636 for (l = gaim_conv_window_get_conversations(dest_win), i = 0;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1637 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1638 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1639
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1640 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1641
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1642 tab = GAIM_GTK_CONVERSATION(conv)->tabby;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1643
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1644 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1645 * If this is the correct tab, record the positions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1646 * for the arrows.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1647 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1648 if (i == page_num) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1649 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1650 arrow1_x = arrow2_x = nb_x + tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1651 arrow1_y = nb_y + tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1652 arrow2_y = nb_y + tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1653 tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1654 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1655 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1656 arrow1_x = nb_x + tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1657 arrow2_x = nb_x + tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1658 tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1659 arrow1_y = arrow2_y = nb_y + tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1660 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1661
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1662 tab_found = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1663 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1664 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1665 else { /* Keep track of the right-most tab that we see. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1666 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1667 last_vis_tab = tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1668 last_vis_tab_loc = tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1669 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1670 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1671 last_vis_tab = tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1672 last_vis_tab_loc = tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1673 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1674 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1675 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1676
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1677 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1678 * 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
1679 * arrows to the right/bottom of the last visible tab.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1680 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1681 if (!tab_found && last_vis_tab) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1682 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1683 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1684 last_vis_tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1685 arrow1_y = nb_y + last_vis_tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1686 arrow2_y = nb_y + last_vis_tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1687 last_vis_tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1688 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1689 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1690 arrow1_x = nb_x + last_vis_tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1691 arrow2_x = nb_x + last_vis_tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1692 last_vis_tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1693 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1694 last_vis_tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1695 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1696 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1697
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1698 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1699 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1700 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1701 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1702 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1703 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1704 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1705 }
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
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1708 return TRUE;
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 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1712 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1713 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1714 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1715
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1716 gtkwin = GAIM_GTK_WINDOW(win);
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 if (gtkwin->in_drag)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1719 return FALSE;
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 (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1722 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1723 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1724 e->y_root >= gtkwin->drag_max_y) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1725
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1726 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1727 notebook_init_grab(gtkwin, widget);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1728 }
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 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1731 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1732
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1733 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1734 * THANK YOU GALEON!
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1735 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1736 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1737 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1738 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1739 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1740 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1741 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1742 int tab_clicked;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1743
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1744 if (e->button != 1 || e->type != GDK_BUTTON_PRESS)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1745 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1746
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1747 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1748
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1749 if (gtkwin->in_drag) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1750 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1751 "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
1752 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1753 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1754
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1755 /*
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1756 * Make sure a tab was actually clicked. The arrow buttons
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1757 * mess things up.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1758 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1759 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
1760
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1761 if (tab_clicked == -1)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1762 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1763
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1764 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1765 * Get the relative position of the press event, with regards to
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1766 * the position of the notebook.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1767 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1768 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1769
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1770 x_rel = e->x_root - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1771 y_rel = e->y_root - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1772
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1773 /* Reset the min/max x/y */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1774 gtkwin->drag_min_x = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1775 gtkwin->drag_min_y = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1776 gtkwin->drag_max_x = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1777 gtkwin->drag_max_y = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1778
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1779 /* Find out which tab was dragged. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1780 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
1781 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1782 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1783
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784 if (!GTK_WIDGET_VISIBLE(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1785 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1787 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1788 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1789
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1790 /* Save the borders of the tab. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1791 gtkwin->drag_min_x = tab->allocation.x + nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1792 gtkwin->drag_min_y = tab->allocation.y + nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1793 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1794 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795 }
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 /* Make sure the click occurred in the tab. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 if (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1799 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1800 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1801 e->y_root >= gtkwin->drag_max_y) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1802
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1803 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1804 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1805
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1806 gtkwin->in_predrag = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1807
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1808 /* Connect the new motion signals. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1809 gtkwin->drag_motion_signal =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1810 g_signal_connect(G_OBJECT(widget), "motion_notify_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1811 G_CALLBACK(notebook_motion_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1812
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1813 gtkwin->drag_leave_signal =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1814 g_signal_connect(G_OBJECT(widget), "leave_notify_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1815 G_CALLBACK(notebook_leave_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1816
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1817 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1818 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1819
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1820 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1821 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1822 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1823 GaimConvWindow *dest_win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1824 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1825 GaimGtkWindow *dest_gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1826 GaimConversation *conv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1827 GtkNotebook *dest_notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1828 gint dest_page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1829
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 * 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
1832 * 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
1833 * close button.
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 (e->button != 1 && e->type != GDK_BUTTON_RELEASE)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1836 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1837
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1838 if (gdk_pointer_is_grabbed()) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1839 gdk_pointer_ungrab(GDK_CURRENT_TIME);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1840 gtk_grab_remove(widget);
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
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1843 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1844
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1845 if (!gtkwin->in_predrag && !gtkwin->in_drag)
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1846 return FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1847
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1848 /* Disconnect the motion signal. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1849 if (gtkwin->drag_motion_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1850 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1851 gtkwin->drag_motion_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1852
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1853 gtkwin->drag_motion_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1854 }
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 * 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
1858 * signal.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1859 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1860 if (gtkwin->in_predrag) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1861 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1862
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1863 if (gtkwin->drag_leave_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1864 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1865 gtkwin->drag_leave_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1866
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1867 gtkwin->drag_leave_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1868 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1869 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1870
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1871 /* If we're not in drag... */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1872 /* We're perfectly normal people! */
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1873 if (!gtkwin->in_drag)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1874 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1875
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1876 gtkwin->in_drag = FALSE;
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 dnd_hints_hide_all();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1879
4369
7e1fb422e5fd [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1880 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
1881
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1882 conv = gaim_conv_window_get_active_conversation(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1883
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1884 if (dest_win == NULL) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1885 if (gaim_conv_window_get_conversation_count(win) < 2)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1886 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1887
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1888 if (gaim_conv_window_get_conversation_count(win) > 1) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1889 /* Make a new window to stick this to. */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1890 GaimConvWindow *new_win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1891 GaimGtkWindow *new_gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1892 GaimGtkConversation *gtkconv;
4748
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1893 gint win_width, win_height;
5121
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
1894
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
1895 gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1896
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1897 new_win = gaim_conv_window_new();
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1898
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1899 gaim_conv_window_add_conversation(new_win,
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1900 gaim_conv_window_remove_conversation(win,
5139
d0182ae31ab8 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5133
diff changeset
1901 gaim_conversation_get_index(conv)));
5121
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
1902
4748
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1903 new_gtkwin = GAIM_GTK_WINDOW(new_win);
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1904
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1905 gtk_window_get_size(GTK_WINDOW(new_gtkwin->window),
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1906 &win_width, &win_height);
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1907
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1908 gtk_window_move(GTK_WINDOW(new_gtkwin->window),
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1909 e->x_root - (win_width / 2),
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1910 e->y_root - (win_height / 2));
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1911
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1912 gaim_conv_window_show(new_win);
4359
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 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1916 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1917
4369
7e1fb422e5fd [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1918 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
7e1fb422e5fd [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1919
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1920 /* Get the destination notebook. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1921 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1922
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1923 /* Get the destination page number. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1924 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1925 e->x_root, e->y_root);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1926
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1927 if (win == dest_win) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1928 gaim_conv_window_move_conversation(win,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1929 gaim_conversation_get_index(conv), dest_page_num);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1930 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1931 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932 size_t pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1933
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1934 gaim_conv_window_remove_conversation(win,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1935 gaim_conversation_get_index(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1936
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1937 pos = gaim_conv_window_add_conversation(dest_win, conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1938
5901
74e273e22f94 [gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents: 5881
diff changeset
1939 if (pos != dest_page_num)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1940 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1941
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1942 gaim_conv_window_switch_conversation(dest_win, dest_page_num);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1943 }
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 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1946
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1947 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1948 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1949
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1950 /**************************************************************************
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1951 * A bunch of buddy icon functions
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1952 **************************************************************************/
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1953 static GdkPixbuf *
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1954 get_tab_icon(GaimConversation *conv)
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1955 {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1956 GaimAccount *account = gaim_conversation_get_account(conv);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1957 const char *name = gaim_conversation_get_name(conv);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1958 GdkPixbuf *status = NULL;
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1959
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1960 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1961 GaimBuddy *b = gaim_find_buddy(account, name);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1962 if (b != NULL) {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1963 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b,
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1964 GAIM_STATUS_ICON_SMALL);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1965 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1966 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1967
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1968 if (!status) {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1969 GdkPixbuf *pixbuf;
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1970 pixbuf = create_prpl_icon(account);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1971
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1972 if (pixbuf) {
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1973 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15,
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1974 GDK_INTERP_BILINEAR);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1975 g_object_unref(pixbuf);
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1976 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1977 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1978 return status;
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1979 }
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
1980
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1981 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1982 update_tab_icon(GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1983 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1984 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1985 GaimConvWindow *win = gaim_conversation_get_window(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1986 GaimAccount *account;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1987 const char *name;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1988 GdkPixbuf *status = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1989
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1990 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1991 name = gaim_conversation_get_name(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1992 account = gaim_conversation_get_account(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1993
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1994 status = get_tab_icon(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1995
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1996 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1997 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
1998
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1999 if (gaim_conv_window_get_active_conversation(win) == conv &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2000 gtkconv->u.im->anim == NULL)
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2001 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
2002
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2003 if(status)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2004 g_object_unref(status);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2005 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2006
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2007 static gboolean
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2008 redraw_icon(gpointer data)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2009 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2010 GaimConversation *conv = (GaimConversation *)data;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2011 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2012
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2013 GdkPixbuf *buf;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2014 GdkPixbuf *scale;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2015 GdkPixmap *pm;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2016 GdkBitmap *bm;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2017 gint delay;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2018
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2019 if (!g_list_find(gaim_get_ims(), conv)) {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2020 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2021 "Conversation not found in redraw_icon. I think this "
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2022 "is a bug.\n");
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2023 return FALSE;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2024 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2025
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2026 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2027
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2028 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2029 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2030
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2031 scale = gdk_pixbuf_scale_simple(buf,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2032 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) /
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2033 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2034 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) /
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2035 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2036 GDK_INTERP_NEAREST);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2037
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2038 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2039 g_object_unref(G_OBJECT(scale));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2040 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
2041 g_object_unref(G_OBJECT(pm));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2042 gtk_widget_queue_draw(gtkconv->u.im->icon);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2043
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2044 if (bm)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2045 g_object_unref(G_OBJECT(bm));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2046
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2047 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
2048
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2049 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2050
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2051 return FALSE;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2052 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2053
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2054 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2055 start_anim(GtkObject *obj, GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2056 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2057 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2058 int delay;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2059
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2060 if (!GAIM_IS_GTK_CONVERSATION(conv))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2061 return;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2062
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2063 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2064
8228
c89cf5af36a3 [gaim-migrate @ 8951]
Mark Doliner <mark@kingant.net>
parents: 8224
diff changeset
2065 if (gtkconv->u.im->anim == NULL)
c89cf5af36a3 [gaim-migrate @ 8951]
Mark Doliner <mark@kingant.net>
parents: 8224
diff changeset
2066 return;
c89cf5af36a3 [gaim-migrate @ 8951]
Mark Doliner <mark@kingant.net>
parents: 8224
diff changeset
2067
8202
f9a086012545 [gaim-migrate @ 8925]
Mark Doliner <mark@kingant.net>
parents: 8192
diff changeset
2068 if (gtkconv->u.im->icon_timer != 0)
f9a086012545 [gaim-migrate @ 8925]
Mark Doliner <mark@kingant.net>
parents: 8192
diff changeset
2069 return;
f9a086012545 [gaim-migrate @ 8925]
Mark Doliner <mark@kingant.net>
parents: 8192
diff changeset
2070
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2071 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2072 return;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2073
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2074 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
2075
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2076 if (gtkconv->u.im->anim)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2077 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2078 conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2079 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2080
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2081 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2082 stop_anim(GtkObject *obj, GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2083 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2084 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2085
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2086 if (!GAIM_IS_GTK_CONVERSATION(conv))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2087 return;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2088
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2089 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2090
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2091 if (gtkconv->u.im->icon_timer != 0)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2092 g_source_remove(gtkconv->u.im->icon_timer);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2093
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2094 gtkconv->u.im->icon_timer = 0;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2095 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2096
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2097 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2098 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2099 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2100 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2101
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2102 if (!GAIM_IS_GTK_CONVERSATION(conv))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2103 return;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2104
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2105 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2106
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2107 gtkconv->u.im->animate =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2108 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
2109
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2110 if (gtkconv->u.im->animate)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2111 start_anim(NULL, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2112 else
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2113 stop_anim(NULL, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2114 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2115 static void
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2116 remove_icon(GaimGtkConversation *gtkconv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2117 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2118 g_return_if_fail(gtkconv != NULL);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2119
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2120 if (gtkconv->u.im->icon != NULL)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2121 gtk_container_remove(GTK_CONTAINER(gtkconv->bbox),
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2122 gtkconv->u.im->icon->parent->parent);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2123
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2124 if (gtkconv->u.im->anim != NULL)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2125 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2126
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2127 if (gtkconv->u.im->icon_timer != 0)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2128 g_source_remove(gtkconv->u.im->icon_timer);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2129
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2130 if (gtkconv->u.im->iter != NULL)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2131 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2132
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2133 gtkconv->u.im->icon_timer = 0;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2134 gtkconv->u.im->icon = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2135 gtkconv->u.im->anim = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2136 gtkconv->u.im->iter = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2137 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2138
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2139 static gboolean
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2140 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2141 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2142 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2143 static GtkWidget *menu = NULL;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2144 GtkWidget *button;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2145
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2146 if (e->button != 3 || e->type != GDK_BUTTON_PRESS)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2147 return FALSE;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2148
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2149 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2150
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2151 /*
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2152 * 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
2153 * thus freeing-up the memory it occupied.
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2154 */
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2155 if (menu != NULL)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2156 gtk_widget_destroy(menu);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2157
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2158 menu = gtk_menu_new();
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2159
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2160 if (gtkconv->u.im->anim &&
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2161 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2162 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2163 gaim_new_check_item(menu, _("Animate"),
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2164 G_CALLBACK(toggle_icon_animate_cb), conv,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2165 gtkconv->u.im->icon_timer);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2166 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2167
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2168 button = gtk_menu_item_new_with_label(_("Hide Icon"));
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2169 g_signal_connect_swapped(G_OBJECT(button), "activate",
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2170 G_CALLBACK(remove_icon), gtkconv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2171 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2172 gtk_widget_show(button);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2173
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2174 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2175 G_CALLBACK(gaim_gtk_save_icon_dialog), conv,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2176 0, 0, NULL);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2177
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2178 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
2179
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2180 return TRUE;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2181 }
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2182 /**************************************************************************
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2183 * End of the bunch of buddy icon functions
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2184 **************************************************************************/
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2185
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2186 /*
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2187 * Makes sure all the menu items and all the buttons are hidden/shown and
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2188 * sensitive/insensitve. This is called after changing tabs and when an
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2189 * account signs on or off.
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2190 */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2191 static void
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2192 gray_stuff_out(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2193 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2194 GaimConvWindow *win;
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2195 GaimGtkWindow *gtkwin;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2196 GaimGtkConversation *gtkconv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2197 GaimConnection *gc;
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2198 GaimPluginProtocolInfo *prpl_info = NULL;
7222
e8972a401eb9 [gaim-migrate @ 7791]
Sean Egan <seanegan@gmail.com>
parents: 7219
diff changeset
2199 GdkPixbuf *window_icon = NULL;
8439
b08d8874d933 [gaim-migrate @ 9169]
Mark Doliner <mark@kingant.net>
parents: 8427
diff changeset
2200 GtkIMHtmlButtons buttons;
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2201
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2202 win = gaim_conversation_get_window(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2203 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2204 gtkconv = GAIM_GTK_CONVERSATION(conv);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2205 gc = gaim_conversation_get_gc(conv);
8439
b08d8874d933 [gaim-migrate @ 9169]
Mark Doliner <mark@kingant.net>
parents: 8427
diff changeset
2206
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
2207 if (gc != NULL)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
2208 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2209
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2210 if (gtkwin->menu.send_as != NULL)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2211 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2212
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2213 /*
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2214 * 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
2215 * Stuff that Gaim IMs support in general should be shown for IM
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2216 * conversations. Stuff that Gaim chats support in gerneal should be
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2217 * shown for chat conversations. It doesn't matter whether the PRPL
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2218 * 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
2219 * is sensitive or not.
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2220 */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2221 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2222 /* 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
2223
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2224 /* Deal with buttons */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2225 gtk_widget_show(gtkconv->info);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2226 gtk_widget_show(gtkconv->send);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2227 gtk_widget_show(gtkconv->u.im->warn);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2228 gtk_widget_show(gtkconv->u.im->block);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2229
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2230 /* Deal with menu items */
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2231 gtk_widget_show(gtkwin->menu.view_log);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2232 gtk_widget_show(gtkwin->menu.add_pounce);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2233 gtk_widget_show(gtkwin->menu.get_info);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2234 gtk_widget_show(gtkwin->menu.warn);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2235 gtk_widget_hide(gtkwin->menu.invite);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2236 gtk_widget_show(gtkwin->menu.alias);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2237 gtk_widget_show(gtkwin->menu.block);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2238
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2239 if (gaim_find_buddy(gaim_conversation_get_account(conv),
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2240 gaim_conversation_get_name(conv)) == NULL) {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2241 gtk_widget_show(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2242 gtk_widget_hide(gtkwin->menu.remove);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2243 gtk_widget_show(gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2244 gtk_widget_hide(gtkconv->remove);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2245 } else {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2246 gtk_widget_show(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2247 gtk_widget_hide(gtkwin->menu.add);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2248 gtk_widget_hide(gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2249 gtk_widget_show(gtkconv->remove);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2250 }
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2251
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2252 gtk_widget_show(gtkwin->menu.insert_link);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2253 gtk_widget_show(gtkwin->menu.insert_image);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2254 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2255 /* 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
2256
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2257 /* Deal with buttons */
7952
fb66c2ee4446 [gaim-migrate @ 8626]
Mark Doliner <mark@kingant.net>
parents: 7949
diff changeset
2258 gtk_widget_show(gtkconv->info);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2259 gtk_widget_show(gtkconv->send);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2260 gtk_widget_show(gtkconv->u.chat->invite);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2261
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2262 /* Deal with menu items */
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2263 gtk_widget_hide(gtkwin->menu.view_log);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2264 gtk_widget_hide(gtkwin->menu.add_pounce);
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2265 gtk_widget_hide(gtkwin->menu.get_info);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2266 gtk_widget_hide(gtkwin->menu.warn);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2267 gtk_widget_show(gtkwin->menu.invite);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2268 gtk_widget_show(gtkwin->menu.alias);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2269 gtk_widget_hide(gtkwin->menu.block);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2270
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
2271 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
2272 gaim_conversation_get_name(conv)) == NULL) {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2273 gtk_widget_show(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2274 gtk_widget_hide(gtkwin->menu.remove);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2275 gtk_widget_show(gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2276 gtk_widget_hide(gtkconv->remove);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2277 } else {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2278 gtk_widget_show(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2279 gtk_widget_hide(gtkwin->menu.add);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2280 gtk_widget_hide(gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2281 gtk_widget_show(gtkconv->remove);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2282 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2283
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2284 gtk_widget_show(gtkwin->menu.insert_link);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2285 gtk_widget_hide(gtkwin->menu.insert_image);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2286 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2287
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2288 /*
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2289 * 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
2290 * and what features that account supports.
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2291 */
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
2292 if ((gc != NULL) &&
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
2293 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) ||
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
2294 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) {
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2295 /* Account is online */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2296
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2297 /* Deal with buttons */
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2298 gtk_widget_set_sensitive(gtkconv->add, TRUE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2299 gtk_widget_set_sensitive(gtkconv->remove, TRUE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2300 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
2301
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2302 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2303 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2304 gtk_widget_set_sensitive(gtkconv->send,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2305 (prpl_info->send_im != NULL));
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2306 gtk_widget_set_sensitive(gtkconv->u.im->warn,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2307 (prpl_info->warn != NULL));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2308 gtk_widget_set_sensitive(gtkconv->u.im->block,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2309 (prpl_info->add_deny != NULL));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2310 }
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2311 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2312 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2313 gtk_widget_set_sensitive(gtkconv->send,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2314 (prpl_info->chat_send != NULL));
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2315 gtk_widget_set_sensitive(gtkconv->u.chat->invite,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2316 (prpl_info->chat_invite != NULL));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2317 }
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2318
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2319 /* Deal with the toolbar */
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2320
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2321 if (gc->flags & GAIM_CONNECTION_HTML) {
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2322 buttons = -1; /* Everything on */
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2323 if (!(prpl_info->options & OPT_PROTO_IM_IMAGE))
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2324 buttons &= ~GTK_IMHTML_IMAGE;
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2325 if (gc->flags & GAIM_CONNECTION_NO_BGCOLOR)
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2326 buttons &= ~GTK_IMHTML_BACKCOLOR;
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2327 } else {
8422
a34fe3117877 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2328 buttons = GTK_IMHTML_SMILEY;
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2329 }
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2330 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons);
8427
2e18099ded93 [gaim-migrate @ 9157]
Sean Egan <seanegan@gmail.com>
parents: 8422
diff changeset
2331 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
2332
8319
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2333 #if 0
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2334 /* Deal with menu items */
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2335 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2336 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2337 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
2338 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2339 gtk_widget_set_sensitive(gtkwin->menu.invite,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2340 (prpl_info->chat_invite != NULL));
8319
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2341 #endif
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2342
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2343 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2344 if (gaim_find_buddy(gaim_conversation_get_account(conv),
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2345 gaim_conversation_get_name(conv)) == NULL)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2346 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2347 else
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2348 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2349 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2350 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2351 gaim_conversation_get_name(conv)) == NULL)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2352 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2353 else
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2354 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2355 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2356
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2357 gtk_widget_set_sensitive(gtkwin->menu.block,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2358 (prpl_info->add_deny != NULL));
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2359 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE);
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
2360 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2361 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2362 gtk_widget_set_sensitive(gtkwin->menu.insert_image,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2363 (prpl_info->options & OPT_PROTO_IM_IMAGE));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2364 } else {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2365 /* Account is offline */
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
2366 /* Or it's a chat where we left. */
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2367
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2368 /* Deal with buttons */
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2369 gtk_widget_set_sensitive(gtkconv->add, FALSE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2370 gtk_widget_set_sensitive(gtkconv->remove, FALSE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2371 gtk_widget_set_sensitive(gtkconv->info, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2372 gtk_widget_set_sensitive(gtkconv->send, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2373 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2374 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2375 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2376 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2377 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2378 }
8420
c25c697525b7 [gaim-migrate @ 9150]
Sean Egan <seanegan@gmail.com>
parents: 8408
diff changeset
2379
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2380 /* Then deal with menu items */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2381 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2382 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2383 gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2384 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2385 gtk_widget_set_sensitive(gtkwin->menu.invite, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2386 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2387 gtk_widget_set_sensitive(gtkwin->menu.block, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2388 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2389 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
2390 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2391 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2392 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2393
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2394 /*
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2395 * Update the window's icon
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2396 */
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2397 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2398 (gtkconv->u.im->anim))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2399 {
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2400 window_icon =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2401 gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2402 g_object_ref(window_icon);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2403 } else {
7219
e60a007bab7d [gaim-migrate @ 7788]
Sean Egan <seanegan@gmail.com>
parents: 7154
diff changeset
2404 window_icon = get_tab_icon(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2405 }
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2406 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2407 g_object_unref(G_OBJECT(window_icon));
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2408 }
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2409
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2410 static void
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2411 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2412 gpointer user_data)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2413 {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2414 GaimConvWindow *win;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2415 GaimConversation *conv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2416 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2417
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2418 win = (GaimConvWindow *)user_data;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2419 conv = gaim_conv_window_get_active_conversation(win);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2420
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2421 g_return_if_fail(conv != NULL);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2422
8192
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2423 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM)
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2424 return;
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2425
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2426 gtkconv = GAIM_GTK_CONVERSATION(conv);
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 stop_anim(NULL, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2429 }
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 static void
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2432 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2433 gpointer user_data)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2434 {
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2435 GaimConvWindow *win;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2436 GaimConversation *conv;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2437 GaimGtkConversation *gtkconv;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2438 GaimGtkWindow *gtkwin;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2439
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2440 win = (GaimConvWindow *)user_data;
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2441 conv = gaim_conv_window_get_conversation_at(win, page_num);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2442
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2443 g_return_if_fail(conv != NULL);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2444
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2445 gtkwin = GAIM_GTK_WINDOW(win);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2446 gtkconv = GAIM_GTK_CONVERSATION(conv);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2447
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2448 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2449
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2450 /* Update the menubar */
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
2451 gray_stuff_out(conv);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2452
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2453 update_typing_icon(conv);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2454
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2455 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
2456 gaim_conversation_is_logging(conv));
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2457
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2458 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
2459 gtkconv->make_sound);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2460
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2461 gtk_check_menu_item_set_active(
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2462 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2463 gtkconv->show_formatting_toolbar);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
2464
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2465 /*
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2466 * We pause icons when they are not visible. If this icon should
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2467 * be animated then start it back up again.lll
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2468 */
8192
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2469 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
36f8dcea9648 [gaim-migrate @ 8913]
Mark Doliner <mark@kingant.net>
parents: 8191
diff changeset
2470 (gtkconv->u.im->animate))
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2471 start_anim(NULL, conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
2472
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2473 gtk_widget_grab_focus(gtkconv->entry);
4681
efa194b5caaf [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
2474
4965
6e7082cf0892 [gaim-migrate @ 5299]
Sean Egan <seanegan@gmail.com>
parents: 4963
diff changeset
2475 gtk_window_set_title(GTK_WINDOW(gtkwin->window),
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
2476 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2477 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2478
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2479 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2480 * Utility functions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2481 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2482
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2483 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2484 got_typing_keypress(GaimConversation *conv, gboolean first)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2485 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2486 GaimConvIm *im;
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2487
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2488 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2489 * 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
2490 * send GAIM_TYPED any time soon.
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2491 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2492
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2493 im = GAIM_CONV_IM(conv);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2494
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2495 if (gaim_conv_im_get_type_again_timeout(im))
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2496 gaim_conv_im_stop_type_again_timeout(im);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2497
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2498 gaim_conv_im_start_type_again_timeout(im);
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2499
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2500 if (first || (gaim_conv_im_get_type_again(im) != 0 &&
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2501 time(NULL) > gaim_conv_im_get_type_again(im))) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2502
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2503 int timeout = serv_send_typing(gaim_conversation_get_gc(conv),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2504 (char *)gaim_conversation_get_name(conv),
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2505 GAIM_TYPING);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2506
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2507 if (timeout)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2508 gaim_conv_im_set_type_again(im, time(NULL) + timeout);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2509 else
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2510 gaim_conv_im_set_type_again(im, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2511 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2512 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2513
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2514 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2515 update_typing_icon(GaimConversation *conv)
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2516 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2517 GaimGtkWindow *gtkwin;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2518 GaimConvIm *im = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2519 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2520
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2521 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2522
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2523 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2524 im = GAIM_CONV_IM(conv);
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2525
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2526 if(gtkwin->menu.typing_icon) {
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2527 gtk_widget_destroy(gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2528 gtkwin->menu.typing_icon = NULL;
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2529 }
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2530 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
2531 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2532 gtk_image_menu_item_set_image(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2533 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2534 gtk_image_new_from_stock(GAIM_STOCK_TYPING,
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2535 GTK_ICON_SIZE_MENU));
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2536 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2537 _("User is typing..."), NULL);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2538 } 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
2539 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2540 gtk_image_menu_item_set_image(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2541 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2542 gtk_image_new_from_stock(GAIM_STOCK_TYPED,
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2543 GTK_ICON_SIZE_MENU));
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2544 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2545 _("User has typed something and paused"), NULL);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2546 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2547
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2548 if(gtkwin->menu.typing_icon) {
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2549 gtk_menu_item_set_right_justified(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2550 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2551 gtk_widget_show_all(gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2552 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2553 gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2554 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2555 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2556
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2557 static gboolean
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2558 update_send_as_selection(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2559 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2560 GaimAccount *account;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2561 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2562 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2563 GtkWidget *menu;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2564 GList *child;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2565
7090
04f9f7440bc3 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2566 if (g_list_find(gaim_get_windows(), win) == NULL)
04f9f7440bc3 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2567 return FALSE;
4849
adf9ca39578f [gaim-migrate @ 5174]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
2568
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2569 conv = gaim_conv_window_get_active_conversation(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2570
5860
52d5fad43950 [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2571 if (conv == NULL)
52d5fad43950 [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2572 return FALSE;
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2573
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2574 account = gaim_conversation_get_account(conv);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2575 gtkwin = GAIM_GTK_WINDOW(win);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2576
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2577 if (gtkwin->menu.send_as == NULL)
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2578 return FALSE;
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2579
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2580 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2581
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2582 menu = gtk_menu_item_get_submenu(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2583 GTK_MENU_ITEM(gtkwin->menu.send_as));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2584
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2585 for (child = gtk_container_get_children(GTK_CONTAINER(menu));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2586 child != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2587 child = child->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2588
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2589 GtkWidget *item = child->data;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2590 GaimAccount *item_account = g_object_get_data(G_OBJECT(item),
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2591 "gaim_account");
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2592
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2593 if (account == item_account) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2594 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2595 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2596 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2597 }
6030
54c37db13279 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6016
diff changeset
2598
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2599 return FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2600 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2601
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2602 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2603 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2604 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2605 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2606 GtkWidget *menu;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2607 GtkWidget *menuitem;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2608 GList *gcs;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2609 GList *convs;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2610 GSList *group = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2611 gboolean first_offline = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2612 gboolean found_online = FALSE;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2613 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2614
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2615 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2616
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2617 if (gtkwin->menu.send_as != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2618 gtk_widget_destroy(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2619
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2620 /* See if we have > 1 connection active. */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2621 if (g_list_length(gaim_connections_get_all()) < 2) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2622 /* Now make sure we don't have any Offline entries. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2623 gboolean found_offline = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2624
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2625 for (convs = gaim_get_conversations();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2626 convs != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2627 convs = convs->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2628
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2629 GaimConversation *conv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2630 GaimAccount *account;
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2631
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2632 conv = (GaimConversation *)convs->data;
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2633 account = gaim_conversation_get_account(conv);
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2634
6495
8ce66049ce68 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
2635 if (account != NULL && account->gc == NULL) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2636 found_offline = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2637 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2638 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2639 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2640
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2641 if (!found_offline) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2642 gtkwin->menu.send_as = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2643 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2644 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2645 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2646
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2647 /* Build the Send As menu */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2648 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2649 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2650
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2651 menu = gtk_menu_new();
7857
43f63ff8a6d8 [gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents: 7855
diff changeset
2652 gtk_menu_shell_insert(GTK_MENU_SHELL(gtkwin->menu.menubar),
43f63ff8a6d8 [gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents: 7855
diff changeset
2653 gtkwin->menu.send_as, 2);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2654 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
2655
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2656 gtk_widget_show(menu);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2657
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2658 /* Fill it with entries. */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2659 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) {
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2660
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2661 GaimConnection *gc;
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2662 GaimAccount *account;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2663 GtkWidget *box;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2664 GtkWidget *label;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2665 GtkWidget *image;
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2666 GdkPixbuf *pixbuf, *scale;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2667
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2668 found_online = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2669
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2670 gc = (GaimConnection *)gcs->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2671
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2672 /* Create a pixmap for the protocol icon. */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2673 pixbuf = create_prpl_icon(gc->account);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2674 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
2675
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2676 /* Now convert it to GtkImage */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2677 if (pixbuf == NULL)
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2678 image = gtk_image_new();
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2679 else
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2680 image = gtk_image_new_from_pixbuf(scale);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2681
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2682 gtk_size_group_add_widget(sg, image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2683
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2684 g_object_unref(G_OBJECT(scale));
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2685 g_object_unref(G_OBJECT(pixbuf));
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2686
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2687 account = gaim_connection_get_account(gc);
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2688
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2689 /* Make our menu item */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2690 menuitem = gtk_radio_menu_item_new_with_label(group,
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2691 gaim_account_get_username(account));
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2692 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
2693
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2694 /* Do some evil, see some evil, speak some evil. */
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2695 box = gtk_hbox_new(FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2696
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2697 label = gtk_bin_get_child(GTK_BIN(menuitem));
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2698 g_object_ref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2699 gtk_container_remove(GTK_CONTAINER(menuitem), label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2700
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2701 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2702 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2703
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2704 g_object_unref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2705
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2706 gtk_container_add(GTK_CONTAINER(menuitem), box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2707
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2708 gtk_widget_show(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2709 gtk_widget_show(image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2710 gtk_widget_show(box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2711
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2712 /* Set our data and callbacks. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2713 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2714 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2715
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2716 g_signal_connect(G_OBJECT(menuitem), "activate",
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2717 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2718
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2719 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2720 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2721 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2722
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2723 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2724 * 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
2725 * (signed off accounts with a window open).
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2726 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2727 for (convs = gaim_get_conversations();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2728 convs != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2729 convs = convs->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2730
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2731 GaimConversation *conv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2732 GaimAccount *account;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2733 GtkWidget *box;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2734 GtkWidget *label;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2735 GtkWidget *image;
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2736 GdkPixbuf *pixbuf, *scale;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2737
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2738 conv = (GaimConversation *)convs->data;
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2739
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2740 if (conv == deleted_conv)
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2741 continue;
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2742
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2743 account = gaim_conversation_get_account(conv);
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2744
6495
8ce66049ce68 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
2745 if (account != NULL && account->gc == NULL) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2746 if (first_offline && found_online) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2747 menuitem = gtk_separator_menu_item_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2748 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2749 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2750
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2751 first_offline = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2752 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2753
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2754 /* Create a pixmap for the protocol icon. */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2755 pixbuf = create_prpl_icon(account);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2756 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2757 GDK_INTERP_BILINEAR);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2758
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2759 /* Now convert it to GtkImage */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2760 if (pixbuf == NULL)
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2761 image = gtk_image_new();
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2762 else
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2763 image = gtk_image_new_from_pixbuf(scale);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2764
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2765 gtk_size_group_add_widget(sg, image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2766
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2767 if (scale != NULL) g_object_unref(scale);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2768 if (pixbuf != NULL) g_object_unref(pixbuf);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2769
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2770 /* Make our menu item */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2771 menuitem = gtk_radio_menu_item_new_with_label(group,
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2772 account->username);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2773 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
2774
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2775 /* Do some evil, see some evil, speak some evil. */
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2776 box = gtk_hbox_new(FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2777
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2778 label = gtk_bin_get_child(GTK_BIN(menuitem));
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2779 g_object_ref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2780 gtk_container_remove(GTK_CONTAINER(menuitem), label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2781
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2782 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2783 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2784
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2785 g_object_unref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2786
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2787 gtk_container_add(GTK_CONTAINER(menuitem), box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2788
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2789 gtk_widget_show(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2790 gtk_widget_show(image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2791 gtk_widget_show(box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2792
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2793 gtk_widget_set_sensitive(menuitem, FALSE);
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2794 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4674
7ffe2b64de2d [gaim-migrate @ 4985]
Nathan Walp <nwalp@pidgin.im>
parents: 4673
diff changeset
2795 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2796
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2797 g_signal_connect(G_OBJECT(menuitem), "activate",
5902
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
2798 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2799
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2800 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2801 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2802 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2803 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2804
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2805 g_object_unref(sg);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2806
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2807 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2808 update_send_as_selection(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2809 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2810
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2811 static GList *
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2812 generate_invite_user_names(GaimConnection *gc)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2813 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2814 GaimBlistNode *gnode,*cnode,*bnode;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2815 static GList *tmp = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2816
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2817 if (tmp)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2818 g_list_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2819
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2820 tmp = g_list_append(NULL, "");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2821
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2822 if (gc != NULL) {
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2823 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2824 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2825 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2826 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2827 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2828 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2829 for(bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2830 GaimBuddy *buddy;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2831
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2832 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2833 continue;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2834
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2835 buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2836
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2837 if (buddy->account == gc->account &&
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2838 GAIM_BUDDY_IS_ONLINE(buddy))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2839 tmp = g_list_append(tmp, buddy->name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2840 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2841 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2842 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2843 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2844
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2845 return tmp;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2846 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2847
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2848 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2849 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2850 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2851 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2852 GaimGtkChatPane *gtkchat;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2853 GaimConvChat *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2854 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2855 GtkListStore *ls;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2856
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2857 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2858 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2859 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2860
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2861 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
2862
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2863 gtk_list_store_append(ls, &iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2864 gtk_list_store_set(ls, &iter, 0,
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2865 (gaim_conv_chat_is_user_ignored(chat, name) ? "X" : " "),
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2866 1, name, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2867 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2868 GTK_SORT_ASCENDING);
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 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2872 tab_complete(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2873 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2874 GaimGtkConversation *gtkconv;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2875 GaimConvChat *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2876 GtkTextIter cursor, word_start, start_buffer;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2877 int start;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2878 int most_matched = -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2879 char *entered, *partial = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2880 char *text;
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2881 char *nick_partial;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2882 GList *matches = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2883 GList *nicks = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2884
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2885 gtkconv = GAIM_GTK_CONVERSATION(conv);
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2886 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2887
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2888 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2889 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2890 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2891
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2892 word_start = cursor;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2893
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2894 /* if there's nothing there just return */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2895 if (!gtk_text_iter_compare(&cursor, &start_buffer))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2896 return;
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2897
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2898 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2899 &cursor, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2900
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2901 /* 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
2902 start = strlen(text) - 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2903
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2904 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2905 gtk_text_iter_backward_chars(&word_start, 2);
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2906 start-=2;
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2907 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2908
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2909 /* find the start of the word that we're tabbing */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2910 while (start >= 0 && text[start] != ' ') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2911 gtk_text_iter_backward_char(&word_start);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2912 start--;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2913 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2914
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2915 g_free(text);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2916
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2917 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2918 &cursor, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2919
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
2920 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2921 if (strlen(entered) >= 2 &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2922 !strncmp(": ", entered + strlen(entered) - 2, 2)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2923
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2924 entered[strlen(entered) - 2] = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2925 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2926 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2927
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2928 if (!g_utf8_strlen(entered, -1)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2929 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2930 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2931 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2932
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2933 nick_partial = g_malloc(strlen(entered)+1);
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2934
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2935 for (nicks = gaim_conv_chat_get_users(chat);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2936 nicks != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2937 nicks = nicks->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2938
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2939 char *nick = nicks->data;
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2940
8159
e1e871897a4b [gaim-migrate @ 8871]
Nathan Walp <nwalp@pidgin.im>
parents: 8155
diff changeset
2941 strncpy(nick_partial, nick, strlen(entered));
8172
e68b1486c7ad [gaim-migrate @ 8885]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
2942 nick_partial[strlen(entered)] = '\0';
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2943 if(gaim_utf8_strcasecmp(nick_partial, entered))
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2944 continue;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2945
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2946 /* if we're here, it's a possible completion */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2947
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2948 /* if we're doing old-style, just fill in the completion */
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
2949 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2950 gtk_text_buffer_delete(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2951 &word_start, &cursor);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2952
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2953 if (strlen(nick) == strlen(entered)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2954 nicks = (nicks->next
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2955 ? nicks->next
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2956 : gaim_conv_chat_get_users(chat));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2957
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2958 nick = nicks->data;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2959 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2960
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2961 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2962 &start_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2963 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2964 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2965
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2966 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2967 char *tmp = g_strdup_printf("%s: ", nick);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2968 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2969 tmp, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2970 g_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2971 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2972 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2973 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2974 nick, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2975
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2976 g_free(nick_partial);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2977 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2978
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2979 return;
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
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2982 /* we're only here if we're doing new style */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2983 if (most_matched == -1) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2984 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2985 * this will only get called once, since from now
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2986 * on most_matched is >= 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2987 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2988 most_matched = strlen(nick);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2989 partial = g_strdup(nick);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2990 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2991 else if (most_matched) {
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2992 char *tmp = g_strdup(nick);
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2993
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2994 while (gaim_utf8_strcasecmp(tmp, partial)) {
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2995 partial[most_matched] = '\0';
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2996 if(most_matched < strlen(tmp))
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2997 tmp[most_matched] = '\0';
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2998 most_matched--;
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
2999 }
8079
8766b6a6641b [gaim-migrate @ 8778]
Mark Doliner <mark@kingant.net>
parents: 8076
diff changeset
3000 most_matched++;
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3001
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3002 g_free(tmp);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3003 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3004
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3005 matches = g_list_append(matches, nick);
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
8021
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3008 g_free(nick_partial);
fef1723f724a [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3009
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3010 /* we're only here if we're doing new style */
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 /* if there weren't any matches, return */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3013 if (!matches) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3014 /* if matches isn't set partials won't be either */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3015 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3016 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3017 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3018
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3019 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3020
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3021 if (!matches->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3022 /* there was only one match. fill it in. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3023 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3024 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3025 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3026
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3027 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3028 char *tmp = g_strdup_printf("%s: ", (char *)matches->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3029 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3030 g_free(tmp);
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 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3033 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3034 matches->data, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3035
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3036 matches = g_list_remove(matches, matches->data);
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 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3039 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3040 * there were lots of matches, fill in as much as possible
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3041 * and display all of them
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 char *addthis = g_malloc0(1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3044
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3045 while (matches) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3046 char *tmp = addthis;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3047 addthis = g_strconcat(tmp, matches->data, " ", NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3048 g_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3049 matches = g_list_remove(matches, matches->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3050 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3051
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
3052 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3053 time(NULL));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3054 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3055 g_free(addthis);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3056 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3057
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3058 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3059 g_free(partial);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3060 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3061
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3062 static void
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3063 save_convo(GtkWidget *save, GaimConversation *c)
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3064 {
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3065 char buf[BUF_LONG];
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3066 GtkWidget *window;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3067
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3068 window = gtk_file_selection_new(_("Save Conversation"));
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3069
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3070 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log",
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7242
diff changeset
3071 gaim_home_dir(), gaim_normalize(c->account, c->name));
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3072 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3073 g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3074 "gaim_conversation", c);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3075 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
6038
78c8b0f636f4 [gaim-migrate @ 6488]
Luke Schierer <lschiere@pidgin.im>
parents: 6033
diff changeset
3076 "clicked", G_CALLBACK(do_check_save_convo), window);
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3077 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3078 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3079 gtk_widget_show(window);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3080 }
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
3081
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3082 static GtkItemFactoryEntry menu_items[] =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3083 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3084 /* Conversation menu */
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3085 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3086
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
3087 { 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
3088 0, "<StockItem>", GAIM_STOCK_IM },
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3089
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3090 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" },
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3091
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3092 { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3093 "<StockItem>", GTK_STOCK_FIND },
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3094 { 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
3095 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3096 "<StockItem>", GTK_STOCK_SAVE_AS },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3097
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3098 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3099
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3100 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3101 0, NULL },
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3102 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0,
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3103 "<StockItem>", GAIM_STOCK_INFO },
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3104 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0,
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3105 "<StockItem>", GAIM_STOCK_WARN },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3106 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3107 "<StockItem>", GAIM_STOCK_INVITE },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3108
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3109 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3110
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3111 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0,
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3112 "<StockItem>", GAIM_STOCK_EDIT },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3113 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3114 "<StockItem>", GAIM_STOCK_BLOCK },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3115 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3116 "<StockItem>", GTK_STOCK_ADD },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3117 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3118 "<StockItem>", GTK_STOCK_REMOVE },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3119
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3120 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3121
8330
80915fd16349 [gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents: 8329
diff changeset
3122 { N_("/Conversation/Insert Lin_k..."), NULL, NULL, 0, /* menu_insert_link_cb, 0, */
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3123 "<StockItem>", GAIM_STOCK_LINK },
8330
80915fd16349 [gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents: 8329
diff changeset
3124 { N_("/Conversation/Insert Imag_e..."), NULL, NULL, 0, /* menu_insert_image_cb, 0, */
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3125 "<StockItem>", GAIM_STOCK_IMAGE },
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3126
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3127 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3128
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3129 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3130 "<StockItem>", GTK_STOCK_CLOSE },
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3131
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3132 /* Options */
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3133 { N_("/_Options"), NULL, NULL, 0, "<Branch>" },
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3134 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" },
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
3135 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" },
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
3136 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" },
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3137 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3138
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
3139 static const int menu_item_count =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3140 sizeof(menu_items) / sizeof(*menu_items);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3141
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3142 static char *
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3143 item_factory_translate_func (const char *path, gpointer func_data)
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3144 {
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
3145 return _((char *)path);
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3146 }
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3147
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3148 static GtkWidget *
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3149 setup_menubar(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3150 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3151 GaimGtkWindow *gtkwin;
5116
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
3152 GtkAccelGroup *accel_group;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3153 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3154
6398
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3155 accel_group = gtk_accel_group_new ();
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3156 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group);
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3157 g_object_unref (accel_group);
5116
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
3158
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3159 gtkwin->menu.item_factory =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3160 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3161
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3162 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3163 item_factory_translate_func,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3164 NULL, NULL);
4630
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
3165
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
3166 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
3167 menu_items, win);
7420
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7415
diff changeset
3168 g_signal_connect(G_OBJECT(accel_group), "accel-changed",
53c86d59f20b [gaim-migrate @ 8022]
Luke Schierer <lschiere@pidgin.im>
parents: 7415
diff changeset
3169 G_CALLBACK(gaim_gtk_save_accels_cb), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3170
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3171
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3172 gtkwin->menu.menubar =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3173 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3174
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3175
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3176 gtkwin->menu.view_log =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3177 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7261
diff changeset
3178 N_("/Conversation/View Log"));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3179 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3180
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3181 gtkwin->menu.add_pounce =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3182 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3183 N_("/Conversation/Add Buddy Pounce..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3184
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3185 /* --- */
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3186
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3187 gtkwin->menu.get_info =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3188 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7859
e873d0bd0e6c [gaim-migrate @ 8513]
Mark Doliner <mark@kingant.net>
parents: 7857
diff changeset
3189 N_("/Conversation/Get Info"));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3190
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3191 gtkwin->menu.warn =
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3192 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3193 N_("/Conversation/Warn..."));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3194
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3195 gtkwin->menu.invite =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3196 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3197 N_("/Conversation/Invite..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3198
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3199 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3200
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3201 gtkwin->menu.alias =
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3202 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3203 N_("/Conversation/Alias..."));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3204
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3205 gtkwin->menu.block =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3206 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3207 N_("/Conversation/Block..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3208
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3209 gtkwin->menu.add =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3210 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3211 N_("/Conversation/Add..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3212
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3213 gtkwin->menu.remove =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3214 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3215 N_("/Conversation/Remove..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3216
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3217 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3218
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3219 gtkwin->menu.insert_link =
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3220 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3221 N_("/Conversation/Insert Link..."));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3222
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3223 gtkwin->menu.insert_image =
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3224 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3225 N_("/Conversation/Insert Image..."));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3226
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3227 /* --- */
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
3228
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3229 gtkwin->menu.logging =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3230 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3231 N_("/Options/Enable Logging"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3232 gtkwin->menu.sounds =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3233 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3234 N_("/Options/Enable Sounds"));
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
3235 gtkwin->menu.show_formatting_toolbar =
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
3236 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
3237 N_("/Options/Show Formatting Toolbar"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3238
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3239 generate_send_as_items(win, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3240
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3241 gtk_widget_show(gtkwin->menu.menubar);
4931
d80bc307e2c8 [gaim-migrate @ 5265]
Sean Egan <seanegan@gmail.com>
parents: 4896
diff changeset
3242
d80bc307e2c8 [gaim-migrate @ 5265]
Sean Egan <seanegan@gmail.com>
parents: 4896
diff changeset
3243 return gtkwin->menu.menubar;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3244 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3245
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3246 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3247 setup_im_buttons(GaimConversation *conv, GtkWidget *parent)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3248 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3249 GaimConnection *gc;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3250 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3251 GaimGtkImPane *gtkim;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3252
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3253 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3254 gtkim = gtkconv->u.im;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3255 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3256
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3257 /* From right to left... */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3258
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3259 /* Send button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3260 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3261 GAIM_STOCK_SEND, GAIM_CONV_IM);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3262 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3263 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3264
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3265 /* Separator */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3266 if (gtkim->sep2 != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3267 gtk_widget_destroy(gtkim->sep2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3268
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3269 gtkim->sep2 = gtk_vseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3270 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3271 gtk_widget_show(gtkim->sep2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3272
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3273 /* Now, um, just kind of all over the place. Huh? */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3274
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3275 /* Warn button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3276 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3277 GAIM_STOCK_WARN, GAIM_CONV_IM);
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3278 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn,
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3279 _("Warn the user"), NULL);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3280 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
3281
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3282 /* Block button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3283 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3284 GAIM_STOCK_BLOCK, GAIM_CONV_IM);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3285 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3286 _("Block the user"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3287 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
3288
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3289 /* Add button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3290 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3291 GTK_STOCK_ADD, GAIM_CONV_IM);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3292 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3293 _("Add the user to your buddy list"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3294 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
3295
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3296 /* Remove button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3297 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3298 GTK_STOCK_REMOVE, GAIM_CONV_IM);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3299 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3300 _("Remove the user from your buddy list"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3301 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
3302
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3303 /* Info button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3304 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info,
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3305 GAIM_STOCK_INFO, GAIM_CONV_IM);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3306 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3307 _("Get the user's information"), NULL);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3308 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
3309
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3310 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3311 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3312 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3313 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3314 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3315 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
3316
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3317 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3318 gtk_size_group_add_widget(gtkconv->sg, gtkim->block);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3319 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3320 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3321 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3322 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3323
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3324 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3325 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3326 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 3);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3327 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 4);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3328 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 5);
4359
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 gaim_gtkconv_update_buttons_by_protocol(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3331
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3332 g_signal_connect(G_OBJECT(gtkim->warn), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3333 G_CALLBACK(warn_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3334 g_signal_connect(G_OBJECT(gtkim->block), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3335 G_CALLBACK(block_cb), conv);
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3336 g_signal_connect(G_OBJECT(gtkconv->add), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3337 G_CALLBACK(add_remove_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3338 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3339 G_CALLBACK(add_remove_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3340 g_signal_connect(G_OBJECT(gtkconv->info), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3341 G_CALLBACK(info_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3342 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3343 G_CALLBACK(send_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3344 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3345
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3346 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3347 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3348 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3349 GaimConnection *gc;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3350 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3351 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3352
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3353 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3354 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3355 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3356
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3357 /* From right to left... */
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3358
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3359 /* Send button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3360 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3361 GAIM_STOCK_SEND, GAIM_CONV_CHAT);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3362 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3363 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
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 /* Separator */
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3366 if (gtkchat->sep != NULL)
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3367 gtk_widget_destroy(gtkchat->sep);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3368
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3369 gtkchat->sep = gtk_vseparator_new();
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3370 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
3371 gtk_widget_show(gtkchat->sep);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3372
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3373 /* Invite */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3374 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3375 GAIM_STOCK_INVITE, GAIM_CONV_CHAT);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3376 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3377 _("Invite a user"), NULL);
7931
2a781d4178ba [gaim-migrate @ 8602]
Mark Doliner <mark@kingant.net>
parents: 7929
diff changeset
3378 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
3379
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3380 /* Add button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3381 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3382 GTK_STOCK_ADD, GAIM_CONV_CHAT);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3383 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3384 _("Add the chat to your buddy list"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3385 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
3386
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3387 /* Remove button */
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3388 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3389 GTK_STOCK_REMOVE, GAIM_CONV_CHAT);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3390 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove,
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3391 _("Remove the chat from your buddy list"), NULL);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3392 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
3393
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3394 /* Set the relief on these. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3395 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
3396 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3397 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3398 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3399
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3400 gtk_size_group_add_widget(gtkconv->sg, gtkchat->invite);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3401 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3402 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3403 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3404
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3405 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 1);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3406 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 3);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3407 gtk_box_reorder_child(GTK_BOX(parent), gtkchat->invite, 3);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3408
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3409 gaim_gtkconv_update_buttons_by_protocol(conv);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
3410
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3411 /* Callbacks */
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3412 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3413 G_CALLBACK(invite_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3414 g_signal_connect(G_OBJECT(gtkconv->add), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3415 G_CALLBACK(add_remove_cb), conv);
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3416 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked",
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
3417 G_CALLBACK(add_remove_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3418 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3419 G_CALLBACK(send_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3420 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3421
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3422
7971
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3423 static void topic_callback(GtkWidget *w, GaimConversation *conv)
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3424 {
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3425 GaimPluginProtocolInfo *prpl_info = NULL;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3426 GaimConnection *gc;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3427 GaimGtkConversation *gtkconv;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3428 GaimGtkChatPane *gtkchat;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3429 const char *topic;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3430
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3431 gc = gaim_conversation_get_gc(conv);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3432
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3433 if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)))
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3434 return;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3435
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3436 if(prpl_info->set_chat_topic == NULL)
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3437 return;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3438
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3439 gtkconv = GAIM_GTK_CONVERSATION(conv);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3440 gtkchat = gtkconv->u.chat;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3441 topic = gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text));
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3442
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3443 if(!g_utf8_collate(topic, gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv))))
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3444 return;
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3445
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3446 prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), topic);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3447 }
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3448
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3449 static GtkWidget *
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3450 setup_chat_pane(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3451 {
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3452 GaimPluginProtocolInfo *prpl_info = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3453 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3454 GaimGtkChatPane *gtkchat;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3455 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3456 GtkWidget *vpaned, *hpaned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3457 GtkWidget *vbox, *hbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3458 GtkWidget *lbox, *bbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3459 GtkWidget *label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3460 GtkWidget *list;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3461 GtkWidget *button;
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3462 GtkWidget *sw;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3463 GtkListStore *ls;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3464 GtkCellRenderer *rend;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3465 GtkTreeViewColumn *col;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3466 GList *focus_chain;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3467
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3468 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3469 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3470 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3471
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3472 /* Setup the outer pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3473 vpaned = gtk_vpaned_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3474 gtk_widget_show(vpaned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3475
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3476 /* Setup the top part of the pane. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3477 vbox = gtk_vbox_new(FALSE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3478 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3479 gtk_widget_show(vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3480
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3481 if (gc != NULL)
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3482 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3483
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3484 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3485 {
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3486 hbox = gtk_hbox_new(FALSE, 6);
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3487 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3488 gtk_widget_show(hbox);
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 label = gtk_label_new(_("Topic:"));
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3491 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3492 gtk_widget_show(label);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3493
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3494 gtkchat->topic_text = gtk_entry_new();
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3495
7971
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3496 if(prpl_info->set_chat_topic == NULL) {
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3497 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3498 } else {
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3499 g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate",
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3500 G_CALLBACK(topic_callback), conv);
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3501 }
6fca0d9cc98b [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3502
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3503 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3504 gtk_widget_show(gtkchat->topic_text);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3505 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3506
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3507 /* Setup the horizontal pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3508 hpaned = gtk_hpaned_new();
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3509 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3510 gtk_widget_show(hpaned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3511
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3512 /* Setup the scrolled window to put gtkimhtml in. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3513 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3514 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
8076
504d98d14c25 [gaim-migrate @ 8775]
Mark Doliner <mark@kingant.net>
parents: 8068
diff changeset
3515 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3516 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3517 GTK_SHADOW_IN);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3518 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3519
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3520 gtk_widget_set_size_request(gtkconv->sw,
5550
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3521 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"),
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3522 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height"));
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3523
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3524 gtk_widget_show(gtkconv->sw);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3525
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3526 /* Setup gtkihmtml. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3527 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3528 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3529
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3530 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3531 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3532
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3533 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3534 G_CALLBACK(entry_stop_rclick_cb), NULL);
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
3535 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event",
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3536 G_CALLBACK(refocus_entry_cb), gtkconv);
8109
6048a3bbc2a3 [gaim-migrate @ 8810]
Mark Doliner <mark@kingant.net>
parents: 8108
diff changeset
3537 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event",
6048a3bbc2a3 [gaim-migrate @ 8810]
Mark Doliner <mark@kingant.net>
parents: 8108
diff changeset
3538 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
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 gaim_setup_imhtml(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3541
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3542 gtk_widget_show(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3543
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3544 /* Build the right pane. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3545 lbox = gtk_vbox_new(FALSE, 6);
4409
0521eec12c33 [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3546 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3547 gtk_widget_show(lbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3548
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3549 /* Setup the label telling how many people are in the room. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3550 gtkchat->count = gtk_label_new(_("0 people in room"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3551 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3552 gtk_widget_show(gtkchat->count);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3553
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3554 /* Setup the list of users. */
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3555 sw = gtk_scrolled_window_new(NULL, NULL);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3556 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8076
504d98d14c25 [gaim-migrate @ 8775]
Mark Doliner <mark@kingant.net>
parents: 8068
diff changeset
3557 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3558 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
3559 gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3560 gtk_widget_show(sw);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3561
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3562 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3563 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3564 GTK_SORT_ASCENDING);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3565
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3566 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3567
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3568 rend = gtk_cell_renderer_text_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3569 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3570 "text", 0, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3571 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3572
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3573 g_signal_connect(G_OBJECT(list), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3574 G_CALLBACK(right_click_chat_cb), conv);
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3575 g_signal_connect(G_OBJECT(list), "popup-menu",
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3576 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3577
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3578 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3579
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3580 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3581 "text", 1, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3582 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3583
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3584 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3585
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3586 gtk_widget_set_size_request(list, 150, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3587
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3588 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3589 gtk_widget_show(list);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3590
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3591 gtkchat->list = list;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3592
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3593 gtk_container_add(GTK_CONTAINER(sw), list);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3594
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3595 /* Setup the user list toolbar. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3596 bbox = gtk_hbox_new(TRUE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3597 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3598 gtk_widget_show(bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3599
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3600 /* IM */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3601 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3602 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3603 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3604 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
3605 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3606 g_signal_connect(G_OBJECT(button), "clicked",
7961
aca39f227ea0 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
3607 G_CALLBACK(chat_im_button_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3608
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3609 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3610
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3611 /* Ignore */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3612 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3613 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3614 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3615 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
3616 gtk_tooltips_set_tip(gtkconv->tooltips, button,
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3617 _("Ignore the user"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3618 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3619 G_CALLBACK(ignore_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3620 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3621
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3622 /* Info */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3623 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3624 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3625 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3626 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3627 gtk_tooltips_set_tip(gtkconv->tooltips, button,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3628 _("Get the user's information"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3629 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3630 G_CALLBACK(info_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3631
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3632 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3633
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3634 gtkconv->info = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3635
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3636 /* Build the toolbar. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3637 vbox = gtk_vbox_new(FALSE, 6);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3638 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3639 gtk_widget_show(vbox);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3640
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
3641 gtkconv->toolbar = gtk_imhtmltoolbar_new();
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
3642 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
3643
8123
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
3644 /* Setup the entry widget.
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
3645 * We never show the horizontal scrollbar because it was causing weird
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
3646 * 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
3647 * cause both scrollbars to appear. Definitely seems like a gtk bug.
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
3648 */
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3649 sw = gtk_scrolled_window_new(NULL, NULL);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3650 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8112
67387ec77301 [gaim-migrate @ 8813]
Mark Doliner <mark@kingant.net>
parents: 8109
diff changeset
3651 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3652 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3653 GTK_SHADOW_IN);
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3654 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3655 gtk_widget_show(sw);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3656
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3657 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3658 gtkconv->entry_buffer =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3659 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3660 gaim_setup_imhtml(gtkconv->entry);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3661 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3662 default_formatize(conv);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3663 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3664 GTK_WRAP_WORD_CHAR);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3665 gtk_widget_set_size_request(gtkconv->entry, -1,
8106
70816fbc2541 [gaim-migrate @ 8806]
Mark Doliner <mark@kingant.net>
parents: 8105
diff changeset
3666 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"));
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3667 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
3668
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3669 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
3670 G_CALLBACK(entry_key_press_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3671 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3672 G_CALLBACK(entry_stop_rclick_cb), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3673
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3674 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
3675 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3676 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3677 gtkconv->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3678
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3679 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3680 gtk_widget_show(gtkconv->entry);
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 /* Setup the bottom button box. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3683 gtkconv->bbox = gtk_hbox_new(FALSE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3684 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3685 gtk_widget_show(gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3686
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3687 setup_chat_buttons(conv, gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3688
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3689 focus_chain = g_list_prepend (NULL, sw);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3690 gtk_container_set_focus_chain (GTK_CONTAINER(vbox), focus_chain);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3691 return vpaned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3692 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3693
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3694 static GtkWidget *
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3695 setup_im_pane(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3696 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3697 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3698 GaimGtkImPane *gtkim;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3699 GtkWidget *paned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3700 GtkWidget *vbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3701 GtkWidget *vbox2;
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3702 GtkWidget *sw;
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3703 GList *focus_chain;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3704
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3705 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3706 gtkim = gtkconv->u.im;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3707
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3708 /* Setup the outer pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3709 paned = gtk_vpaned_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3710 gtk_widget_show(paned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3711
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3712 /* Setup the top part of the pane. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3713 vbox = gtk_vbox_new(FALSE, 6);
4409
0521eec12c33 [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3714 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3715 gtk_widget_show(vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3716
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3717 /* Setup the gtkimhtml widget. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3718 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3719 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
8076
504d98d14c25 [gaim-migrate @ 8775]
Mark Doliner <mark@kingant.net>
parents: 8068
diff changeset
3720 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3721 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3722 GTK_SHADOW_IN);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3723 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
3724
5550
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3725 gtk_widget_set_size_request(gtkconv->sw,
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3726 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"),
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3727 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3728 gtk_widget_show(gtkconv->sw);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3729
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3730 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3731 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3732
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3733 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3734 G_CALLBACK(entry_stop_rclick_cb), NULL);
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
3735 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event",
6057
dc2124210882 [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3736 G_CALLBACK(refocus_entry_cb), gtkconv);
8109
6048a3bbc2a3 [gaim-migrate @ 8810]
Mark Doliner <mark@kingant.net>
parents: 8108
diff changeset
3737 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event",
6048a3bbc2a3 [gaim-migrate @ 8810]
Mark Doliner <mark@kingant.net>
parents: 8108
diff changeset
3738 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3739
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3740 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3741 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3742
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3743 gaim_setup_imhtml(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3744 gtk_widget_show(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3745
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3746 vbox2 = gtk_vbox_new(FALSE, 6);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3747 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3748 gtk_widget_show(vbox2);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3749
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3750 /* Build the toolbar. */
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
3751 gtkconv->toolbar = gtk_imhtmltoolbar_new();
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
3752 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
3753
8123
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
3754 /* Setup the entry widget.
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
3755 * 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
3756 * 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
3757 * cause both scrollbars to appear. Definitely seems like a gtk bug.
0dc9fffb1e28 [gaim-migrate @ 8827]
Mark Doliner <mark@kingant.net>
parents: 8112
diff changeset
3758 */
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3759 sw = gtk_scrolled_window_new(NULL, NULL);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3760 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8112
67387ec77301 [gaim-migrate @ 8813]
Mark Doliner <mark@kingant.net>
parents: 8109
diff changeset
3761 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3762 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3763 GTK_SHADOW_IN);
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3764 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0);
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3765 gtk_widget_show(sw);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3766
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3767 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3768 gtkconv->entry_buffer =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3769 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8061
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3770 gaim_setup_imhtml(gtkconv->entry);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3771 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
ea073d234191 [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
3772 default_formatize(conv);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3773 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3774 GTK_WRAP_WORD_CHAR);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3775 gtk_widget_set_size_request(gtkconv->entry, -1,
8106
70816fbc2541 [gaim-migrate @ 8806]
Mark Doliner <mark@kingant.net>
parents: 8105
diff changeset
3776 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"));
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3777 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
3778
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3779 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
3780 G_CALLBACK(entry_key_press_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3781 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3782 G_CALLBACK(entry_stop_rclick_cb), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3783
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3784 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3785 G_CALLBACK(insert_text_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3786 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3787 G_CALLBACK(delete_text_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3788
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3789 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
3790 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3791
7949
b356e2a9d7fc [gaim-migrate @ 8623]
Mark Doliner <mark@kingant.net>
parents: 7946
diff changeset
3792 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3793 gtk_widget_show(gtkconv->entry);
8319
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
3794 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
a2c5537a814b [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
3795 gtkconv->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3796
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3797 gtkconv->bbox = gtk_hbox_new(FALSE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3798 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3799 gtk_widget_show(gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3800
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3801 setup_im_buttons(conv, gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3802
8143
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3803 focus_chain = g_list_prepend (NULL, sw);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3804 gtk_container_set_focus_chain (GTK_CONTAINER(vbox2), focus_chain);
8633dc570442 [gaim-migrate @ 8851]
Mark Doliner <mark@kingant.net>
parents: 8133
diff changeset
3805
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3806 return paned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3807 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3808
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3809 static void
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3810 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
3811 GtkSelectionData *sd, guint info, guint t,
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3812 GaimConversation *conv)
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3813 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3814 GaimConvWindow *win = conv->window;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3815 GaimConversation *c;
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3816
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3817 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE))
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3818 {
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
3819 GaimBlistNode *n = NULL;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3820 GaimBuddy *b;
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
3821 memcpy(&n, sd->data, sizeof(n));
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3822
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3823 if (GAIM_BLIST_NODE_IS_CONTACT(n))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3824 b = gaim_contact_get_priority_buddy((GaimContact*)n);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3825 else if (GAIM_BLIST_NODE_IS_BUDDY(n))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3826 b = (GaimBuddy*)n;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3827 else
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
3828 return;
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3829
7089
2cd3756a637b [gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents: 7078
diff changeset
3830 c = gaim_conversation_new(GAIM_CONV_IM, b->account, b->name);
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3831
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3832 gaim_conv_window_add_conversation(win, c);
4702
cb5b23dfd82b [gaim-migrate @ 5013]
Sean Egan <seanegan@gmail.com>
parents: 4689
diff changeset
3833 }
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3834 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
3835 {
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3836 char *protocol = NULL;
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3837 char *username = NULL;
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3838 GaimAccount *account;
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3839
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3840 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
3841 &protocol, &username, NULL))
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3842 {
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3843 if (account == NULL)
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3844 {
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3845 gaim_notify_error(NULL, NULL,
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3846 _("You are not currently signed on with an account that "
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3847 "can add that buddy."), NULL);
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3848 }
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3849 else
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3850 {
7718
da04da151ec6 [gaim-migrate @ 8363]
Sean Egan <seanegan@gmail.com>
parents: 7717
diff changeset
3851 c = gaim_conversation_new(GAIM_CONV_IM, account, username);
da04da151ec6 [gaim-migrate @ 8363]
Sean Egan <seanegan@gmail.com>
parents: 7717
diff changeset
3852 gaim_conv_window_add_conversation(win, c);
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3853 }
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3854 }
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3855
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3856 if (username != NULL) g_free(username);
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3857 if (protocol != NULL) g_free(protocol);
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3858
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3859 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
3860 }
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3861 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3862
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3863 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3864 * GTK+ window ops
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 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3867 gaim_gtk_new_window(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3868 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3869 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3870 GtkPositionType pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3871 GtkWidget *testidea;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3872 GtkWidget *menubar;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3873
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3874 gtkwin = g_malloc0(sizeof(GaimGtkWindow));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3875
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3876 win->ui_data = gtkwin;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3877
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3878 /* Create the window. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3879 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3880 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation");
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
3881 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE);
4510
4c394222c732 [gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents: 4505
diff changeset
3882 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0);
5173
bfd1e4c681a1 [gaim-migrate @ 5537]
Nathan Walp <nwalp@pidgin.im>
parents: 5167
diff changeset
3883 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3884 gtk_widget_realize(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3885
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3886 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3887 G_CALLBACK(close_win_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3888
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3889 /* Create the notebook. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3890 gtkwin->notebook = gtk_notebook_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3891
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3892 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3893
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3894 #if 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3895 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3896 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3897 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3898 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3899 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3900 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook));
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3901 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE);
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3902
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3903 gtk_widget_show(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3904
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
3905 g_signal_connect(G_OBJECT(gtkwin->notebook), "switch_page",
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
3906 G_CALLBACK(before_switch_conv_cb), win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3907 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3908 G_CALLBACK(switch_conv_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3909
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3910 /* Setup the tab drag and drop signals. */
4486
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
3911 gtk_widget_add_events(gtkwin->notebook,
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
3912 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
3913 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event",
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3914 G_CALLBACK(notebook_press_cb), win);
4486
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
3915 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event",
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3916 G_CALLBACK(notebook_release_cb), win);
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3917
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3918 testidea = gtk_vbox_new(FALSE, 0);
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3919
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3920 /* Setup the menubar. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3921 menubar = setup_menubar(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3922 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3923
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3924 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3925
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3926 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3927
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3928 gtk_widget_show(testidea);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3929 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3930
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3931 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3932 gaim_gtk_destroy_window(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3933 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3934 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3935
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3936 gtk_widget_destroy(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3937
4630
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
3938 g_object_unref(G_OBJECT(gtkwin->menu.item_factory));
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
3939
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3940 g_free(gtkwin);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3941 win->ui_data = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3942 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3943
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3944 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3945 gaim_gtk_show(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3946 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3947 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
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 gtk_widget_show(gtkwin->window);
7413
ed9c9b955140 [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3950
ed9c9b955140 [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3951 #ifdef _WIN32
7415
41030dfcb288 [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3952 /* This works around a win32 gtk+ bug, where it can't handle
41030dfcb288 [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3953 * creating the button correctly before the window is shown.
41030dfcb288 [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3954 * That's why we get the appearance of a button, without all
41030dfcb288 [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3955 * the normal button-like properties, like being able to click
7413
ed9c9b955140 [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3956 * it. ;-) --Nathan */
7414
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3957 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) {
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3958 GaimConversation *conv;
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3959 GaimGtkConversation *gtkconv;
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3960
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3961 conv = gaim_conv_window_get_conversation_at(win, 0);
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3962 if(conv) {
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3963 gtkconv = GAIM_GTK_CONVERSATION(conv);
7415
41030dfcb288 [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3964 gtk_widget_hide(gtkconv->close);
7414
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3965 gtk_widget_show_all(gtkconv->close);
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3966 }
9c7b0148978d [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3967 }
7413
ed9c9b955140 [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3968 #endif
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3969 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3970
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3971 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3972 gaim_gtk_hide(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3973 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3974 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3975
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3976 gtk_widget_hide(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3977 }
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 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3980 gaim_gtk_raise(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3981 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3982 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3983
5484
0a392a45e497 [gaim-migrate @ 5880]
Nathan Walp <nwalp@pidgin.im>
parents: 5462
diff changeset
3984 gtk_widget_show(gtkwin->window);
5103
bfcf72c5a930 [gaim-migrate @ 5466]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
3985 gtk_window_deiconify(GTK_WINDOW(gtkwin->window));
4526
e5b024352f9e [gaim-migrate @ 4804]
Nathan Walp <nwalp@pidgin.im>
parents: 4515
diff changeset
3986 gdk_window_raise(gtkwin->window->window);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3987 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3988
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3989 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3990 gaim_gtk_flash(GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3991 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3992 #ifdef _WIN32
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3993 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3994
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3995 wgaim_conv_im_blink(gtkwin->window);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3996 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3997 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3998
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3999 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4000 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4001 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4002 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4003
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4004 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4005
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4006 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4007 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4008
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4009 static const GtkTargetEntry te[] =
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4010 {
7695
557f72040bdf [gaim-migrate @ 8340]
Sean Egan <seanegan@gmail.com>
parents: 7694
diff changeset
4011 {"text/plain", 0, 0},
557f72040bdf [gaim-migrate @ 8340]
Sean Egan <seanegan@gmail.com>
parents: 7694
diff changeset
4012 {"text/uri-list", 0, 1},
7712
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4013 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 2},
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4014 {"STRING", 0, 3},
2823111061ba [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4015 {"application/x-im-contact", 0, 4}
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4016 };
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4017
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4018 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4019 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4020 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4021 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4022 GaimGtkConversation *gtkconv, *focus_gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4023 GaimConversation *focus_conv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4024 GtkWidget *pane = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4025 GtkWidget *tab_cont;
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4026 GtkWidget *tabby, *menu_tabby;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4027 gboolean new_ui;
4383
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4028 GaimConversationType conv_type;
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4029 const char *name;
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4030
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4031 name = gaim_conversation_get_name(conv);
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4032 conv_type = gaim_conversation_get_type(conv);
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4033 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4034
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4035 if (conv->ui_data != NULL) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4036 gtkconv = (GaimGtkConversation *)conv->ui_data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4037
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4038 tab_cont = gtkconv->tab_cont;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4039
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4040 new_ui = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4041 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4042 else {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4043 gtkconv = g_malloc0(sizeof(GaimGtkConversation));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4044 conv->ui_data = gtkconv;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4045
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4046 /* Setup some initial variables. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4047 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4048 gtkconv->tooltips = gtk_tooltips_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4049
4421
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
4050 /* Setup the foreground and background colors */
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
4051 gaim_gtkconv_update_font_colors(conv);
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
4052
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4053 /* Setup the font face */
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4054 gaim_gtkconv_update_font_face(conv);
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4055
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4056 if (conv_type == GAIM_CONV_IM) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4057 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4058 gtkconv->u.im->a_virgin = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4059
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4060 pane = setup_im_pane(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4061 }
7879
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4062 else if (conv_type == GAIM_CONV_CHAT) {
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4063 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane));
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4064
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4065 pane = setup_chat_pane(conv);
f9df510460d7 [gaim-migrate @ 8533]
Mark Doliner <mark@kingant.net>
parents: 7859
diff changeset
4066 }
4359
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 if (pane == NULL) {
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4069 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat);
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4070 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
4071
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4072 g_free(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4073 conv->ui_data = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4074
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4075 return;
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
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4078 /* Setup drag-and-drop */
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4079 gtk_drag_dest_set(pane,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4080 GTK_DEST_DEFAULT_MOTION |
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4081 GTK_DEST_DEFAULT_DROP,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4082 te, sizeof(te) / sizeof(GtkTargetEntry),
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4083 GDK_ACTION_COPY);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4084 gtk_drag_dest_set(gtkconv->imhtml,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4085 GTK_DEST_DEFAULT_MOTION |
4702
cb5b23dfd82b [gaim-migrate @ 5013]
Sean Egan <seanegan@gmail.com>
parents: 4689
diff changeset
4086 GTK_DEST_DEFAULT_DROP,
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4087 te, sizeof(te) / sizeof(GtkTargetEntry),
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4088 GDK_ACTION_DEFAULT | GDK_ACTION_COPY |
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4089 GDK_ACTION_MOVE);
7695
557f72040bdf [gaim-migrate @ 8340]
Sean Egan <seanegan@gmail.com>
parents: 7694
diff changeset
4090 gtk_drag_dest_set(gtkconv->entry,
557f72040bdf [gaim-migrate @ 8340]
Sean Egan <seanegan@gmail.com>
parents: 7694
diff changeset
4091 GTK_DEST_DEFAULT_MOTION |
557f72040bdf [gaim-migrate @ 8340]
Sean Egan <seanegan@gmail.com>
parents: 7694
diff changeset
4092 GTK_DEST_DEFAULT_DROP,
557f72040bdf [gaim-migrate @ 8340]
Sean Egan <seanegan@gmail.com>
parents: 7694
diff changeset
4093 te, sizeof(te) / sizeof(GtkTargetEntry),
557f72040bdf [gaim-migrate @ 8340]
Sean Egan <seanegan@gmail.com>
parents: 7694
diff changeset
4094 GDK_ACTION_COPY);
557f72040bdf [gaim-migrate @ 8340]
Sean Egan <seanegan@gmail.com>
parents: 7694
diff changeset
4095
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4096 g_signal_connect(G_OBJECT(pane), "drag_data_received",
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4097 G_CALLBACK(conv_dnd_recv), conv);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4098 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received",
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4099 G_CALLBACK(conv_dnd_recv), conv);
8105
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4100 #if 0
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4101 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received",
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4102 G_CALLBACK(conv_dnd_recv), conv);
42c7227d6e4d [gaim-migrate @ 8805]
Mark Doliner <mark@kingant.net>
parents: 8091
diff changeset
4103 #endif
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4104
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4105 /* Setup the container for the tab. */
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4106 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 6);
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4107 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4108 gtk_container_add(GTK_CONTAINER(tab_cont), pane);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4109 gtk_widget_show(pane);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4110
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4111 new_ui = TRUE;
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4112
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4113 gtkconv->make_sound = TRUE;
5902
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
4114
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
4115 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool(
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
4116 "/gaim/gtk/conversations/show_formatting_toolbar");
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
4117
8329
9dd7c75ed433 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4118 if (gtkconv->show_formatting_toolbar)
9dd7c75ed433 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4119 gtk_widget_show(gtkconv->toolbar);
9dd7c75ed433 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4120
8176
c733bb72b002 [gaim-migrate @ 8890]
Mark Doliner <mark@kingant.net>
parents: 8173
diff changeset
4121 g_signal_connect_swapped(G_OBJECT(pane), "focus",
c733bb72b002 [gaim-migrate @ 8890]
Mark Doliner <mark@kingant.net>
parents: 8173
diff changeset
4122 G_CALLBACK(gtk_widget_grab_focus),
c733bb72b002 [gaim-migrate @ 8890]
Mark Doliner <mark@kingant.net>
parents: 8173
diff changeset
4123 gtkconv->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4124 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4125
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4126 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 6);
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4127 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 6);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4128
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4129 /* Close button. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4130 gtkconv->close = gtk_button_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4131 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
4132 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4133 gtk_container_add(GTK_CONTAINER(gtkconv->close),
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4134 gtk_image_new_from_stock(GTK_STOCK_CLOSE,
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4135 GTK_ICON_SIZE_MENU));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4136 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close,
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4137 _("Close conversation"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4138
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4139 g_signal_connect(G_OBJECT(gtkconv->close), "clicked",
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4140 G_CALLBACK(close_conv_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4141
7446
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4142 /*
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4143 * 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
4144 * border bug. I love you guys! -- ChipX86
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4145 */
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4146 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed",
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4147 G_CALLBACK(tab_close_button_state_changed_cb), NULL);
064c697cc223 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4148
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4149 /* Status icon. */
6440
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
4150 gtkconv->icon = gtk_image_new();
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4151 gtkconv->menu_icon = gtk_image_new();
6440
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
4152 update_tab_icon(conv);
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4153
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4154 /* Tab label. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4155 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
4156 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4157 #if 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4158 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
4159 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4160 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4161
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4162
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4163 /* Pack it all together. */
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4164 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
4165 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4166 FALSE, FALSE, 0);
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4167
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4168 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs"))
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4169 {
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4170 gtk_widget_show_all(gtkconv->icon);
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4171 gtk_widget_show_all(gtkconv->menu_icon);
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4172 }
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4173
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4174 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
4175 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
4176 gtk_widget_show(gtkconv->tab_label);
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4177 gtk_widget_show(gtkconv->menu_label);
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4178 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
4179
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4180 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
4181 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
4182 gtk_widget_show_all(gtkconv->close);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4183
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
4184 gtk_widget_show(tabby);
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
4185 gtk_widget_show(menu_tabby);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4186
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
4187 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
4188 gaim_gtkconv_update_buddy_icon(conv);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
4189
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4190 /* Add this pane to the conversations notebook. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4191 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4192 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4193 tab_cont, menu_tabby);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4194
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4195 gtk_widget_show(tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4196
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4197 if (gaim_conv_window_get_conversation_count(win) == 1) {
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4198 /* Er, bug in notebooks? Switch to the page manually. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4199 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0);
4851
4b6bf5ed9c5e [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
4200
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4201 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4202 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4203 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4204 else
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4205 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4206
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4207 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
4208 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)));
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4209 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv);
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4210 gtk_widget_grab_focus(focus_gtkconv->entry);
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 if (!new_ui)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4213 g_object_unref(gtkconv->tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4214
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4215 if (gaim_conv_window_get_conversation_count(win) == 1)
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
4216 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4217 }
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 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4220 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4221 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4222 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4223 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4224 unsigned int index;
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4225 GaimConversationType conv_type;
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4226
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4227 conv_type = gaim_conversation_get_type(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4228 index = gaim_conversation_get_index(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4229
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4230 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4231 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4232
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4233 g_object_ref(gtkconv->tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4234 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4235
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4236 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4237
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4238 /* go back to tabless if need be */
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4239 if (gaim_conv_window_get_conversation_count(win) <= 2) {
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4240 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4241 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4242 }
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4243
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4244
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4245 /* 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
4246 if (conv_type == GAIM_CONV_IM &&
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4247 gaim_conversation_get_gc(conv) == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4248
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
4249 generate_send_as_items(win, conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4250 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4251 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4252
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4253 static void
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4254 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4255 unsigned int new_index)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4256 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4257 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4258 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4259
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4260 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4261 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4262
4415
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4263 if (new_index > gaim_conversation_get_index(conv))
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4264 new_index--;
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4265
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4266 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4267 gtkconv->tab_cont, new_index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4268 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4269
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4270 static int
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4271 gaim_gtk_get_active_index(const GaimConvWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4272 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4273 GaimGtkWindow *gtkwin;
5680
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4274 int index;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4275
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4276 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4277
5680
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4278 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook));
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4279
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4280 /*
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4281 * A fix, because the first conversation may be active, but not
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4282 * appear in the notebook just yet. -- ChipX86
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4283 */
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4284 return (index == -1 ? 0 : index);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4285 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4286
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4287 static GaimConvWindowUiOps window_ui_ops =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4288 {
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4289 gaim_gtk_conversations_get_conv_ui_ops,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4290 gaim_gtk_new_window,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4291 gaim_gtk_destroy_window,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4292 gaim_gtk_show,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4293 gaim_gtk_hide,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4294 gaim_gtk_raise,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4295 gaim_gtk_flash,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4296 gaim_gtk_switch_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4297 gaim_gtk_add_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4298 gaim_gtk_remove_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4299 gaim_gtk_move_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4300 gaim_gtk_get_active_index
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4301 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4302
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4303 GaimConvWindowUiOps *
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4304 gaim_gtk_conversations_get_win_ui_ops(void)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4305 {
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4306 return &window_ui_ops;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4307 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4308
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4309 /**************************************************************************
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4310 * Conversation UI operations
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4311 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4312 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4313 gaim_gtkconv_destroy(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4314 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4315 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4316
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4317 if (gtkconv->dialogs.log != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4318 gtk_widget_destroy(gtkconv->dialogs.log);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4319
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4320 gtk_widget_destroy(gtkconv->tab_cont);
4892
dc6de8ad81ae [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4859
diff changeset
4321 g_object_unref(gtkconv->tab_cont);
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4322
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4323 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4755
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4324 if (gtkconv->u.im->icon_timer != 0)
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4325 g_source_remove(gtkconv->u.im->icon_timer);
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4326
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4327 if (gtkconv->u.im->save_icon != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4328 gtk_widget_destroy(gtkconv->u.im->save_icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4329
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4330 if (gtkconv->u.im->anim != NULL)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4331 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4332
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4333 g_free(gtkconv->u.im);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4334 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4335 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4336 g_free(gtkconv->u.chat);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4337 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4338
4633
812148fb2e2f [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4339 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips));
812148fb2e2f [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4340
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4341 g_free(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4342 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4343
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4344 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4345 gaim_gtkconv_write_im(GaimConversation *conv, const char *who,
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4346 const char *message, GaimMessageFlags flags,
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4347 time_t mtime)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4348 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4349 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4350
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4351 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4352
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4353 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4354 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4355
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4356 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4357 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4358
4382
76223649765b [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4359 /* Play a sound, if specified in prefs. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4360 if (gtkconv->make_sound) {
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4361 if (flags & GAIM_MESSAGE_RECV) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4362 if (gtkconv->u.im->a_virgin &&
5820
a929723531c8 [gaim-migrate @ 6250]
Nathan Walp <nwalp@pidgin.im>
parents: 5754
diff changeset
4363 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4364
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4365 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4366 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4367 else
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4368 gaim_sound_play_event(GAIM_SOUND_RECEIVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4369 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4370 else {
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4371 gaim_sound_play_event(GAIM_SOUND_SEND);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4372 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4373 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4374
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4375 gtkconv->u.im->a_virgin = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4376
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4377 gaim_conversation_write(conv, who, message, flags, mtime);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4378 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4379
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4380 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4381 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who,
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4382 const char *message, GaimMessageFlags flags, time_t mtime)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4383 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4384 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4385
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4386 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4387
4382
76223649765b [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4388 /* Play a sound, if specified in prefs. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4389 if (gtkconv->make_sound) {
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4390 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND))
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4391 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY);
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4392 else if (flags & GAIM_MESSAGE_RECV) {
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4393 if ((flags & GAIM_MESSAGE_NICK) &&
6102
c2273728aea1 [gaim-migrate @ 6563]
Luke Schierer <lschiere@pidgin.im>
parents: 6095
diff changeset
4394 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4395
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4396 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4397 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4398 else
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4399 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4400 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4401 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4402
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4403 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
4404 flags |= GAIM_MESSAGE_COLORIZE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4405
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4406 /* Raise the window, if specified in prefs. */
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4407 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4408 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4409
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4410 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4411 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4412
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4413 gaim_conversation_write(conv, who, message, flags, mtime);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4414 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4415
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4416 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4417 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who,
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4418 const char *message, GaimMessageFlags flags,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4419 time_t mtime)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4420 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4421 GaimGtkConversation *gtkconv;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4422 GaimConvWindow *win;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
4423 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4424 int gtk_font_options = 0;
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4425 GSList *images = NULL;
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4426 char buf[BUF_LONG];
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4427 char buf2[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4428 char mdate[64];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4429 char color[10];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4430 char *str;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4431 char *with_font_tag;
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4432 char *sml_attrib = NULL;
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4433 size_t length = strlen(message) + 1;
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4434
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4435 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4436 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4437
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4438 win = gaim_conversation_get_window(conv);
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4439
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4440 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4441 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4442 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) ||
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4443 (gaim_conversation_get_type(conv) == GAIM_CONV_IM &&
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4444 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") ||
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4445 gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))))) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4446
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4447 gaim_conv_window_show(win);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4448 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4449
7078
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4450 if (flags & GAIM_MESSAGE_IMAGES)
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4451 gaim_gtk_find_images(message, &images);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4452
5133
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4453 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
4454 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
4455 else
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4456 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4457
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4458 if(gc)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4459 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4460
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4461 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4462
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4463 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4464 gtk_font_options ^= GTK_IMHTML_NO_COLOURS;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4465
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4466 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4467 gtk_font_options ^= GTK_IMHTML_NO_FONTS;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4468
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4469 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4470 gtk_font_options ^= GTK_IMHTML_NO_SIZES;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4471
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7954
diff changeset
4472 /* this is gonna crash one day, I can feel it. */
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7954
diff changeset
4473 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
4474 OPT_PROTO_USE_POINTSIZE) {
5367
fc0441fbf159 [gaim-migrate @ 5743]
Luke Schierer <lschiere@pidgin.im>
parents: 5329
diff changeset
4475 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE;
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4476 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4477
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4478 if (flags & GAIM_MESSAGE_SYSTEM) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4479 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
8380
4a5b36510665 [gaim-migrate @ 9108]
Sean Egan <seanegan@gmail.com>
parents: 8374
diff changeset
4480 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
4481 mdate, message);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4482 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4483 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4484
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4485 g_snprintf(buf2, sizeof(buf2),
8408
13a65fd6a932 [gaim-migrate @ 9138]
Nathan Walp <nwalp@pidgin.im>
parents: 8407
diff changeset
4486 "<FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT><BR>",
7850
9ca340251309 [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
4487 sml_attrib, mdate, message);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4488
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4489 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4490 buf2, 0, images);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4491
7583
532635bc38c1 [gaim-migrate @ 8201]
Mark Doliner <mark@kingant.net>
parents: 7564
diff changeset
4492 /* Add the message to a conversations scrollback buffer */
532635bc38c1 [gaim-migrate @ 8201]
Mark Doliner <mark@kingant.net>
parents: 7564
diff changeset
4493 conv->history = g_string_append(conv->history, buf);
532635bc38c1 [gaim-migrate @ 8201]
Mark Doliner <mark@kingant.net>
parents: 7564
diff changeset
4494 conv->history = g_string_append(conv->history, "<BR>\n");
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4495
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4496 } else if (flags & GAIM_MESSAGE_NO_LOG) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4497 g_snprintf(buf, BUF_LONG,
7850
9ca340251309 [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
4498 "<B><FONT %s COLOR=\"#777777\">%s</FONT></B><BR>",
9ca340251309 [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
4499 sml_attrib, message);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4500
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4501 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4502 buf, 0, images);
4359
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 else {
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4505 char *new_message = g_memdup(message, length);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4506
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4507 if (flags & GAIM_MESSAGE_WHISPER) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4508 str = g_malloc(1024);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4509
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4510 /* If we're whispering, it's not an autoresponse. */
7564
54b370f7d9bf [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
4511 if (gaim_message_meify(new_message, length)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4512 g_snprintf(str, 1024, "***%s", who);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4513 strcpy(color, "#6C2585");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4514 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4515 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4516 g_snprintf(str, 1024, "*%s*:", who);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4517 strcpy(color, "#00FF00");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4518 }
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4519 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4520 else {
7564
54b370f7d9bf [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
4521 if (gaim_message_meify(new_message, length)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4522 str = g_malloc(1024);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4523
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4524 if (flags & GAIM_MESSAGE_AUTO_RESP)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4525 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4526 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4527 g_snprintf(str, 1024, "***%s", who);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4528
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4529 if (flags & GAIM_MESSAGE_NICK)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4530 strcpy(color, "#AF7F00");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4531 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4532 strcpy(color, "#062585");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4533 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4534 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4535 str = g_malloc(1024);
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4536 if (flags & GAIM_MESSAGE_AUTO_RESP)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4537 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4538 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4539 g_snprintf(str, 1024, "%s:", who);
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4540 if (flags & GAIM_MESSAGE_NICK)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4541 strcpy(color, "#AF7F00");
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4542 else if (flags & GAIM_MESSAGE_RECV) {
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4543 if (flags & GAIM_MESSAGE_COLORIZE) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4544 const char *u;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4545 int m = 0;
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4546
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4547 for (u = who; *u != '\0'; u++)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4548 m += *u;
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4549
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4550 m = m % NUM_NICK_COLORS;
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4551
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4552 strcpy(color, nick_colors[m]);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4553 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4554 else
7854
1e8322fc19b5 [gaim-migrate @ 8508]
Sean Egan <seanegan@gmail.com>
parents: 7853
diff changeset
4555 strcpy(color, RECV_COLOR);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4556 }
6621
42fdf16f1dad [gaim-migrate @ 7145]
Mark Doliner <mark@kingant.net>
parents: 6495
diff changeset
4557 else if (flags & GAIM_MESSAGE_SEND)
7854
1e8322fc19b5 [gaim-migrate @ 8508]
Sean Egan <seanegan@gmail.com>
parents: 7853
diff changeset
4558 strcpy(color, SEND_COLOR);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4559 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4560 }
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4561
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4562 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4563 g_snprintf(buf, BUF_LONG,
8380
4a5b36510665 [gaim-migrate @ 9108]
Sean Egan <seanegan@gmail.com>
parents: 8374
diff changeset
4564 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\">(%s)</FONT> "
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4565 "<B>%s</B></FONT> ", color,
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4566 sml_attrib ? sml_attrib : "", mdate, str);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4567 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4568 g_snprintf(buf, BUF_LONG,
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4569 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color,
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4570 sml_attrib ? sml_attrib : "", str);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4571
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4572 g_snprintf(buf2, BUF_LONG,
8380
4a5b36510665 [gaim-migrate @ 9108]
Sean Egan <seanegan@gmail.com>
parents: 8374
diff changeset
4573 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>"
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4574 "<B>%s</B></FONT> ",
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4575 color, sml_attrib ? sml_attrib : "", mdate, str);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4576
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4577 g_free(str);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4578
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4579 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4580 buf2, 0, images);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4581
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4582 if(gc){
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4583 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
4584 char *post = "</font>";
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4585 int pre_len = strlen(pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4586 int post_len = strlen(post);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4587
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4588 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
4589
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4590 strcpy(with_font_tag, pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4591 memcpy(with_font_tag + pre_len, new_message, length);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4592 strcpy(with_font_tag + pre_len + length, post);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4593
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4594 length += pre_len + post_len;
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4595 g_free(pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4596 }
4608
5fcb44d771d2 [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4602
diff changeset
4597 else
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4598 with_font_tag = g_memdup(new_message, length);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4599
7589
59c1cee97cbb [gaim-migrate @ 8207]
Nathan Walp <nwalp@pidgin.im>
parents: 7583
diff changeset
4600 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4601 with_font_tag, gtk_font_options, images);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4602
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4603 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4604
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4605 /*conv->history = g_string_append(conv->history, t1);
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4606 conv->history = g_string_append(conv->history, t2);
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4607 conv->history = g_string_append(conv->history, "\n");
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4608
7431
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4609 g_free(t1);
643cbc9a6035 [gaim-migrate @ 8036]
Sean Egan <seanegan@gmail.com>
parents: 7420
diff changeset
4610 g_free(t2); */
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4611
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4612 g_free(with_font_tag);
7447
0e7a835e2433 [gaim-migrate @ 8058]
Mark Doliner <mark@kingant.net>
parents: 7446
diff changeset
4613 g_free(new_message);
7440
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4614 }
8c0527c91a92 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4615
6062
2cd7c409d71d [gaim-migrate @ 6512]
Mark Doliner <mark@kingant.net>
parents: 6057
diff changeset
4616
5012
3ee1b1409660 [gaim-migrate @ 5348]
Nathan Walp <nwalp@pidgin.im>
parents: 4965
diff changeset
4617 if(sml_attrib)
3ee1b1409660 [gaim-migrate @ 5348]
Nathan Walp <nwalp@pidgin.im>
parents: 4965
diff changeset
4618 g_free(sml_attrib);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4619
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4620 if (images) {
7078
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4621 GSList *tmp;
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4622
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4623 for (tmp = images; tmp; tmp = tmp->next) {
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4624 GdkPixbuf *pixbuf = tmp->data;
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4625 if(pixbuf)
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4626 g_object_unref(pixbuf);
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4627 }
7078
acd2a66e59ed [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4628
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4629 g_slist_free(images);
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6877
diff changeset
4630 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4631 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4632
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4633 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4634 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4635 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4636 GaimConvChat *chat;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4637 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4638 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4639 char tmp[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4640 int num_users;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4641 int pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4642
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4643 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4644 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4645 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4646
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4647 num_users = g_list_length(gaim_conv_chat_get_users(chat));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4648
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4649 g_snprintf(tmp, sizeof(tmp),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4650 ngettext("%d person in room", "%d people in room",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4651 num_users),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4652 num_users);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4653
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4654 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4655
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4656 if (gtkconv->make_sound)
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4657 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4658
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4659 pos = g_list_index(gaim_conv_chat_get_users(chat), user);
4359
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 add_chat_buddy_common(conv, user, pos);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4662 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4663
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4664 static void
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4665 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users)
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4666 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4667 GaimConvChat *chat;
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4668 GaimGtkConversation *gtkconv;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4669 GaimGtkChatPane *gtkchat;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4670 GList *l;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4671 char tmp[BUF_LONG];
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4672 int num_users;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4673 int pos;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4674
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4675 chat = GAIM_CONV_CHAT(conv);
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4676 gtkconv = GAIM_GTK_CONVERSATION(conv);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4677 gtkchat = gtkconv->u.chat;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4678
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4679 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
4680
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4681 g_snprintf(tmp, sizeof(tmp),
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4682 ngettext("%d person in room", "%d people in room",
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4683 num_users),
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4684 num_users);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4685
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4686 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4687
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4688 for (l = users; l != NULL; l = l->next) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4689 pos = g_list_index(gaim_conv_chat_get_users(chat), (char *)l->data);
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4690
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4691 add_chat_buddy_common(conv, (char *)l->data, pos);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4692 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4693 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4694
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4695 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4696 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name,
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4697 const char *new_name)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4698 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4699 GaimConvChat *chat;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4700 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4701 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4702 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4703 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4704 GList *names;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4705 int pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4706 int f = 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4707
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4708 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4709 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4710 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4711
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4712 for (names = gaim_conv_chat_get_users(chat);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4713 names != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4714 names = names->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4715
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4716 char *u = (char *)names->data;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4717
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4718 if (!gaim_utf8_strcasecmp(u, old_name)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4719 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4720
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4721 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4722 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4723
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4724 while (f != 0) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4725 char *val;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4726
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4727 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4728
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4729 if (!gaim_utf8_strcasecmp(old_name, val)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4730 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
4640
951204c08b13 [gaim-migrate @ 4949]
Nathan Walp <nwalp@pidgin.im>
parents: 4636
diff changeset
4731 break;
951204c08b13 [gaim-migrate @ 4949]
Nathan Walp <nwalp@pidgin.im>
parents: 4636
diff changeset
4732 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4733
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4734 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4735
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4736 g_free(val);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4737 }
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4738
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4739 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4740 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4741 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4742
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4743 if (!names)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4744 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4745
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4746 pos = g_list_index(gaim_conv_chat_get_users(chat), new_name);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4747
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4748 add_chat_buddy_common(conv, new_name, pos);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4749 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4750
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4751 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4752 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4753 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4754 GaimConvChat *chat;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4755 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4756 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4757 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4758 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4759 GList *names;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4760 char tmp[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4761 int num_users;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4762 int f = 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4763
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4764 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4765 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4766 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4767
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4768 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
4769
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4770 for (names = gaim_conv_chat_get_users(chat);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4771 names != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4772 names = names->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4773
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4774 char *u = (char *)names->data;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4775
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4776 if (!gaim_utf8_strcasecmp(u, user)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4777 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4778
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4779 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4780 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4781
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4782 while (f != 0) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4783 char *val;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4784
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4785 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4786
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4787 if (!gaim_utf8_strcasecmp(user, val))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4788 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4789
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4790 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4791
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4792 g_free(val);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4793 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4794
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4795 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4796 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4797 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4798
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4799 if (names == NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4800 return;
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 g_snprintf(tmp, sizeof(tmp),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4803 ngettext("%d person in room", "%d people in room",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4804 num_users), num_users);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4805
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4806 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4807
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4808 if (gtkconv->make_sound)
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4809 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4810 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4811
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4812 static void
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4813 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users)
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4814 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4815 GaimConvChat *chat;
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4816 GaimGtkConversation *gtkconv;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4817 GaimGtkChatPane *gtkchat;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4818 GtkTreeIter iter;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4819 GtkTreeModel *model;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4820 GList *names = NULL;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4821 GList *l;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4822 char tmp[BUF_LONG];
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4823 int num_users;
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
4824 gboolean f;
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4825
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4826 chat = GAIM_CONV_CHAT(conv);
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4827 gtkconv = GAIM_GTK_CONVERSATION(conv);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4828 gtkchat = gtkconv->u.chat;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4829
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4830 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
4831 g_list_length(users);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4832
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4833 for (l = users; l != NULL; l = l->next) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4834 for (names = gaim_conv_chat_get_users(chat);
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4835 names != NULL;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4836 names = names->next) {
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4837
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4838 char *u = (char *)names->data;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4839
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4840 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) {
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4841 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4842
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4843 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model),
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4844 &iter))
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4845 break;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4846
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
4847 do {
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4848 char *val;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4849
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4850 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter,
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4851 1, &val, -1);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4852
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4853 if (!gaim_utf8_strcasecmp((char *)l->data, val))
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4854 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4855
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4856 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4857
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4858 g_free(val);
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
4859 } while (f);
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4860
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4861 break;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4862 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4863 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4864 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4865
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4866 if (names == NULL)
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4867 return;
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4868
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4869 g_snprintf(tmp, sizeof(tmp),
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4870 ngettext("%d person in room", "%d people in room",
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4871 num_users), num_users);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4872
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4873 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4874 }
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4875
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4876 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4877 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4878 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4879 GaimConvWindow *win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4880 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4881 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4882 GaimGtkChatPane *gtkchat;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4883 GaimConvChat *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4884
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4885 win = gaim_conversation_get_window(conv);
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4886 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4887 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4888
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4889 if (type == GAIM_CONV_UPDATE_ACCOUNT)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4890 {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4891 gaim_conversation_autoset_title(conv);
5881
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4892
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4893 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4894 gaim_gtkconv_update_buddy_icon(conv);
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4895
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4896 gaim_gtkconv_update_buttons_by_protocol(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4897
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
4898 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4899
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4900 smiley_themeize(gtkconv->imhtml);
6394
2a4b93b57518 [gaim-migrate @ 6899]
Nathan Walp <nwalp@pidgin.im>
parents: 6392
diff changeset
4901
6395
0587dd97f700 [gaim-migrate @ 6900]
Nathan Walp <nwalp@pidgin.im>
parents: 6394
diff changeset
4902 update_tab_icon(conv);
4359
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 else if (type == GAIM_CONV_UPDATE_TYPING ||
8155
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4905 type == GAIM_CONV_UPDATE_UNSEEN ||
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4906 type == GAIM_CONV_UPDATE_TITLE)
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4907 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4908 const char *title;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4909 GaimConvIm *im = NULL;
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4910 char color[8];
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4911
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4912 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4913 im = GAIM_CONV_IM(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4914
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4915 title = gaim_conversation_get_title(conv);
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4916
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4917 *color = '\0';
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4918
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4919 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4920 gtk_widget_realize(gtkconv->tab_label);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4921
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4922 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
4923 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4924 strcpy(color, "#47A046");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4925 }
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4926 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
4927 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4928 strcpy(color, "#D1940C");
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4929 }
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4930 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4931 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4932 strcpy(color, "#314E6C");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4933 }
8252
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
4934 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT)
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
4935 {
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
4936 strcpy(color, "#DF421E");
10a41e67a800 [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
4937 }
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4938 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4939 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4940 strcpy(color, "#868272");
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4941 }
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4942
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4943 if (*color != '\0')
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4944 {
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4945 char *label;
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4946
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4947 label = g_strdup_printf("<span color=\"%s\">%s</span>",
8155
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4948 color, title);
7995
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
4949 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label);
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
4950 g_free(label);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4951 }
7995
87d3260f961a [gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents: 7990
diff changeset
4952 else
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4953 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title);
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4954
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4955 if (conv == gaim_conv_window_get_active_conversation(win))
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4956 update_typing_icon(conv);
8155
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4957
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4958 if (type == GAIM_CONV_UPDATE_TITLE) {
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4959 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title);
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4960 if (conv == gaim_conv_window_get_active_conversation(win))
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4961 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title);
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4962 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4963 }
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4964 else if (type == GAIM_CONV_UPDATE_TOPIC)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4965 {
7154
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4966 const char *topic;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4967 chat = GAIM_CONV_CHAT(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4968 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4969
7154
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4970 topic = gaim_conv_chat_get_topic(chat);
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4971
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4972 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),topic);
19cc14ea7599 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
4973 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text,
8155
77d1252b3803 [gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents: 8143
diff changeset
4974 topic, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4975 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4976 else if (type == GAIM_CONV_ACCOUNT_ONLINE ||
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4977 type == GAIM_CONV_ACCOUNT_OFFLINE)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4978 {
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
4979 gray_stuff_out(gaim_conv_window_get_active_conversation(win));
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
4980 generate_send_as_items(win, NULL);
6440
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
4981 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs"))
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
4982 update_tab_icon(conv);
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4983 }
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4984 else if (type == GAIM_CONV_UPDATE_AWAY)
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4985 {
6440
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
4986 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs"))
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
4987 update_tab_icon(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4988 }
8256
1d86096ae0f4 [gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents: 8253
diff changeset
4989 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
4990 type == GAIM_CONV_UPDATE_CHATLEFT)
8001
934f5df83b29 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
4991 {
7929
94a90bf90f32 [gaim-migrate @ 8600]
Mark Doliner <mark@kingant.net>
parents: 7928
diff changeset
4992 gray_stuff_out(conv);
4397
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4993 }
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
4994 else if (type == GAIM_CONV_UPDATE_ICON)
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
4995 {
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
4996 gaim_gtkconv_update_buddy_icon(conv);
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
4997 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4998 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4999
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5000 static GaimConversationUiOps conversation_ui_ops =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5001 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5002 gaim_gtkconv_destroy, /* destroy_conversation */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5003 gaim_gtkconv_write_chat, /* write_chat */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5004 gaim_gtkconv_write_im, /* write_im */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5005 gaim_gtkconv_write_conv, /* write_conv */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5006 gaim_gtkconv_chat_add_user, /* chat_add_user */
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5007 gaim_gtkconv_chat_add_users, /* chat_add_users */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5008 gaim_gtkconv_chat_rename_user, /* chat_rename_user */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5009 gaim_gtkconv_chat_remove_user, /* chat_remove_user */
6407
ba0b99a72be2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5010 gaim_gtkconv_chat_remove_users, /* chat_remove_users */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5011 NULL, /* update_progress */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5012 gaim_gtkconv_updated /* updated */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5013 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5014
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5015 GaimConversationUiOps *
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
5016 gaim_gtk_conversations_get_conv_ui_ops(void)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5017 {
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
5018 return &conversation_ui_ops;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5019 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5020
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5021 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5022 * Public conversation utility functions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5023 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5024 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5025 gaim_gtkconv_update_buddy_icon(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5026 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5027 GaimGtkConversation *gtkconv;
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
5028 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5029
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5030 char filename[256];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5031 FILE *file;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5032 GError *err = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5033
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5034 GaimBuddy *buddy;
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5035
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5036 const void *data;
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5037 size_t len;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5038
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5039 GdkPixbuf *buf;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5040
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5041 GtkWidget *event;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5042 GtkWidget *frame;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5043 GdkPixbuf *scale;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5044 GdkPixmap *pm;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5045 GdkBitmap *bm;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5046 int sf = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5047
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5048 g_return_if_fail(conv != NULL);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5049 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv));
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5050 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
5051
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5052 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5053
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5054 remove_icon(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5055
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5056 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
5057 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5058
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5059 if (gaim_conversation_get_gc(conv) == NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5060 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5061
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5062 if (gtkconv->u.im->anim)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5063 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5064 else
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5065 gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons");
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5066
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5067 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv),
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5068 gaim_conversation_get_name(conv))) != NULL) {
8374
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5069 const char *iconfile;
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
5070 if((iconfile = gaim_blist_node_get_string((GaimBlistNode*)buddy,
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
5071 "buddy_icon"))) {
8374
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5072 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5073 struct stat st;
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5074 if ((icon == NULL) && (!stat(iconfile, &st))) {
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5075 FILE *file = fopen(iconfile, "rb");
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5076 if (file) {
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5077 char *data = g_malloc(st.st_size);
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5078 fread(data, 1, st.st_size, file);
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5079 fclose(file);
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5080 gaim_buddy_icons_set_for_user(gaim_conversation_get_account(conv), gaim_conversation_get_name(conv), data, st.st_size);
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5081 g_free(data);
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5082 }
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5083 return;
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5084 }
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5085 else
8407
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
5086 gtkconv->u.im->anim =
15614a7cdc13 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
5087 gdk_pixbuf_animation_new_from_file(iconfile, &err);
8374
e7463be62fb1 [gaim-migrate @ 9101]
Mark Doliner <mark@kingant.net>
parents: 8330
diff changeset
5088 }
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5089 }
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5090 else
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5091 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5092 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5093
6877
1b5b0cea6915 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5094 if (icon == NULL)
1b5b0cea6915 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5095 return;
1b5b0cea6915 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5096
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5097 data = gaim_buddy_icon_get_data(icon, &len);
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5098
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5099 /* this is such an evil hack, i don't know why i'm even considering it.
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5100 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5101 g_snprintf(filename, sizeof(filename),
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5102 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d",
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5103 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid());
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5104
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5105 if (!(file = fopen(filename, "wb")))
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5106 return;
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5107
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5108 fwrite(data, 1, len, file);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5109 fclose(file);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5110
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5111 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5112 /* make sure we remove the file as soon as possible */
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5113 unlink(filename);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5114 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5115
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5116 if (err) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5117 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5118 "Buddy icon error: %s\n", err->message);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5119 g_error_free(err);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5120 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5121
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5122 if (!gtkconv->u.im->anim)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5123 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5124
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5125 if(gtkconv->u.im->iter)
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5126 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5127
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5128 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5129 gtkconv->u.im->iter = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5130 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5131 } else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5132 gtkconv->u.im->iter =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5133 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5134 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
5135 if (gtkconv->u.im->animate)
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5136 start_anim(NULL, conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5137 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5138
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5139 sf = SCALE(gtkconv->u.im->anim);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5140 scale = gdk_pixbuf_scale_simple(buf,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5141 MAX(gdk_pixbuf_get_width(buf) * sf /
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5142 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5143 MAX(gdk_pixbuf_get_height(buf) * sf /
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5144 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5145 GDK_INTERP_NEAREST);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5146
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5147 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5148 g_object_unref(G_OBJECT(scale));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5149
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5150 frame = gtk_frame_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5151 gtk_frame_set_shadow_type(GTK_FRAME(frame),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5152 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN));
8253
0c5977fd3101 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
5153 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 0);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5154 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5155 gtk_widget_show(frame);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5156
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5157 event = gtk_event_box_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5158 gtk_container_add(GTK_CONTAINER(frame), event);
5314
1f901484599d [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
5159 g_signal_connect(G_OBJECT(event), "button-press-event",
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5160 G_CALLBACK(icon_menu), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5161 gtk_widget_show(event);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5162
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5163 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5164 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5165 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5166 gtk_widget_show(gtkconv->u.im->icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5167
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5168 g_object_unref(G_OBJECT(pm));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5169
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5170 if (bm)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5171 g_object_unref(G_OBJECT(bm));
7143
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
5172
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
5173 /* The buddy icon code needs badly to be fixed. */
80a000885b2c [gaim-migrate @ 7710]
Sean Egan <seanegan@gmail.com>
parents: 7125
diff changeset
5174 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
5175 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
5176 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5177 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5178
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5179 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5180 gaim_gtkconv_update_font_colors(GaimConversation *conv)
4421
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
5181 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5182 GaimGtkConversation *gtkconv;
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5183
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5184 if (!GAIM_IS_GTK_CONVERSATION(conv))
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5185 return;
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5186
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5187 gtkconv = GAIM_GTK_CONVERSATION(conv);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5188
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5189 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"),
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5190 &gtkconv->fg_color);
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5191
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5192 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"),
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5193 &gtkconv->bg_color);
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5194 }
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5195
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5196 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5197 gaim_gtkconv_update_font_face(GaimConversation *conv)
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5198 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5199 GaimGtkConversation *gtkconv;
6141
387221e0623f [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5200
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5201 if (!GAIM_IS_GTK_CONVERSATION(conv))
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5202 return;
6141
387221e0623f [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5203
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5204 gtkconv = GAIM_GTK_CONVERSATION(conv);
5551
51699de873af [gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents: 5550
diff changeset
5205
6141
387221e0623f [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5206 strncpy(gtkconv->fontface,
387221e0623f [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5207 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"),
387221e0623f [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5208 sizeof(gtkconv->fontface));
4421
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
5209 }
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
5210
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
5211 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5212 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5213 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5214 GaimConvWindow *win;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5215
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5216 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5217 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5218
7887
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5219 win = gaim_conversation_get_window(conv);
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5220
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5221 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv)
4b43a3f9de73 [gaim-migrate @ 8545]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5222 gray_stuff_out(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5223 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5224
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5225 GaimConvWindow *
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5226 gaim_gtkwin_get_at_xy(int x, int y)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5227 {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5228 GaimConvWindow *win = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5229 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5230 GdkWindow *gdkwin;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5231 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5232
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5233 gdkwin = gdk_window_at_pointer(&x, &y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5234
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5235 if (gdkwin)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5236 gdkwin = gdk_window_get_toplevel(gdkwin);
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 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5239 win = (GaimConvWindow *)l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5240
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5241 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5242 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5243
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5244 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5245
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5246 if (gdkwin == gtkwin->window->window)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5247 return win;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5248 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5249
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5250 return NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5251 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5252
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5253 int
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5254 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
5255 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5256 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5257 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5258 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5259 GtkNotebook *notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5260 GtkWidget *tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5261 gint i, page_num = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5262 gboolean first_visible = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5263
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5264 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5265 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5266
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5267 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5268 notebook = GTK_NOTEBOOK(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5269
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5270 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5271 x_rel = x - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5272 y_rel = y - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5273
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5274 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5275 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5276 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5277
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5278 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5279 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5280
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5281 if (!GTK_WIDGET_MAPPED(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5282 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5283
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5284 if (first_visible) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5285 first_visible = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5286
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5287 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5288 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5289 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5290
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5291 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5292 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5293
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5294 if (tab->allocation.x <= x_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5295 if (tab->allocation.x + tab->allocation.width <= x_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5296 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5297 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5298 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5299 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5300 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5301 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5302 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5303 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5304 if (tab->allocation.y <= y_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5305 if (tab->allocation.y + tab->allocation.height <= y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5306 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5307 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5308 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5309 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5310 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5311 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5312 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5313 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5314
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5315 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5316 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5317
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5318 return page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5319 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5320
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5321 int
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5322 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
5323 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5324 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5325 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5326 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5327 GtkNotebook *notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5328 GtkWidget *tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5329 gint i, page_num = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5330
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5331 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5332 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5333
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5334 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5335 notebook = GTK_NOTEBOOK(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5336
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5337 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5338 x_rel = x - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5339 y_rel = y - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5340
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5341 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5342 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5343 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5344
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5345 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5346 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5347
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5348 if (!GTK_WIDGET_MAPPED(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5349 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5350
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5351 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5352 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
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 if (tab->allocation.x <= x_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5355 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5356 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5357 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5358 page_num = i;
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 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5361 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5362 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5363 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5364 if (tab->allocation.y <= y_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5365 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5366 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5367 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5368 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5369 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5370 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5371 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5372 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5373 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5374
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5375 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5376 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5377
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5378 return page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5379 }
4940
3708545afe42 [gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents: 4939
diff changeset
5380
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5381 static void
6398
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5382 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value,
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5383 gpointer data)
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5384 {
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5385 if (value)
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5386 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5387 GDK_Escape, 0, TRUE);
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5388 else
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5389 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5390 GDK_W, GDK_CONTROL_MASK, TRUE);
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5391 }
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5392
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5393 static void
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5394 icons_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value,
6398
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5395 gpointer data)
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5396 {
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5397 GList *l;
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5398 GaimConversation *conv;
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5399 GaimGtkConversation *gtkconv;
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5400
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5401 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5402 conv = (GaimConversation *)l->data;
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5403
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5404 if (!GAIM_IS_GTK_CONVERSATION(conv))
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5405 continue;
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5406
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5407 gtkconv = GAIM_GTK_CONVERSATION(conv);
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5408
6440
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
5409 if (value) {
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
5410 update_tab_icon(conv);
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5411 gtk_widget_show(gtkconv->icon);
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
5412 gtk_widget_show(gtkconv->menu_icon);
6440
ded6796da6b9 [gaim-migrate @ 6948]
Sean Egan <seanegan@gmail.com>
parents: 6433
diff changeset
5413 }
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
5414 else {
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5415 gtk_widget_hide(gtkconv->icon);
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
5416 gtk_widget_hide(gtkconv->menu_icon);
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6760
diff changeset
5417 }
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5418 }
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5419 }
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5420
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5421 static void
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5422 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
5423 gpointer data)
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5424 {
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5425 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5426 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5427 GaimGtkConversation *gtkconv;
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5428
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5429 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5430 conv = (GaimConversation *)l->data;
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5431
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5432 if (!GAIM_IS_GTK_CONVERSATION(conv))
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5433 continue;
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5434
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5435 gtkconv = GAIM_GTK_CONVERSATION(conv);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5436
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5437 if (value)
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5438 gtk_widget_show(gtkconv->close);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5439 else
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5440 gtk_widget_hide(gtkconv->close);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5441 }
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5442 }
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5443
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5444 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5445 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5446 gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5447 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5448 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5449 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5450 GaimGtkConversation *gtkconv;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5451
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5452 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5453 conv = (GaimConversation *)l->data;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5454
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5455 if (!GAIM_IS_GTK_CONVERSATION(conv))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5456 continue;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5457
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5458 gtkconv = GAIM_GTK_CONVERSATION(conv);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5459
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5460 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
5461 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5462 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5463
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5464 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5465 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5466 gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5467 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5468 #ifdef USE_GTKSPELL
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5469 GList *cl;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5470 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5471 GaimGtkConversation *gtkconv;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5472 GtkSpell *spell;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5473
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5474 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5475
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5476 conv = (GaimConversation *)cl->data;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5477
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5478 if (!GAIM_IS_GTK_CONVERSATION(conv))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5479 continue;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5480
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5481 gtkconv = GAIM_GTK_CONVERSATION(conv);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5482
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5483 if (value)
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
5484 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5485 else {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5486 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry));
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5487 gtkspell_detach(spell);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5488 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5489 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5490 #endif
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5491 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5492
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5493 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5494 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5495 gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5496 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5497 GList *cl;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5498 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5499 GaimGtkConversation *gtkconv;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5500
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5501 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5502 conv = (GaimConversation *)cl->data;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5503
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5504 if (!GAIM_IS_GTK_CONVERSATION(conv))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5505 continue;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5506
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5507 gtkconv = GAIM_GTK_CONVERSATION(conv);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5508
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5509 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value));
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5510 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5511 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5512
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5513 static void
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5514 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5515 gpointer data)
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5516 {
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5517 GList *l;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5518 GtkPositionType pos;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5519 GaimConvWindow *win;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5520 GaimGtkWindow *gtkwin;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5521
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5522 pos = GPOINTER_TO_INT(value);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5523
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5524 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5525 win = (GaimConvWindow *)l->data;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5526
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5527 if (!GAIM_IS_GTK_WINDOW(win))
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5528 continue;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5529
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5530 gtkwin = GAIM_GTK_WINDOW(win);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5531
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5532 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5533 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5534 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5535
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5536 static void
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5537 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type,
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5538 gpointer value, gpointer data)
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5539 {
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5540 GList *l;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5541 GaimConversation *conv;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5542 GaimGtkConversation *gtkconv;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5543 GaimConvWindow *win;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5544 GaimGtkWindow *gtkwin;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5545
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5546 for (l = gaim_get_conversations(); l != NULL; l = l->next)
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5547 {
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5548 conv = (GaimConversation *)l->data;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5549
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5550 if (!GAIM_IS_GTK_CONVERSATION(conv))
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5551 continue;
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5552
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5553 gtkconv = GAIM_GTK_CONVERSATION(conv);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5554 win = gaim_conversation_get_window(conv);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5555 gtkwin = GAIM_GTK_WINDOW(win);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5556
7386
414c701ef1ff [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5557 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5558 gtk_check_menu_item_set_active(
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5559 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5560 gtkconv->show_formatting_toolbar);
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5561
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5562 if (gtkconv->show_formatting_toolbar)
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
5563 gtk_widget_show(gtkconv->toolbar);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5564 else
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
5565 gtk_widget_hide(gtkconv->toolbar);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5566 }
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5567 }
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5568
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5569 static void
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5570 im_button_type_pref_cb(const char *name, GaimPrefType type,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5571 gpointer value, gpointer data)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5572 {
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5573 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5574 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5575 GaimGtkConversation *gtkconv;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5576
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5577 for (l = gaim_get_ims(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5578 conv = (GaimConversation *)l->data;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5579 gtkconv = GAIM_GTK_CONVERSATION(conv);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5580
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5581 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send));
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5582 }
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5583 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5584
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5585 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5586 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5587 gpointer value, gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5588 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5589 GList *l;
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5590 GaimConversation *conv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5591 GaimGtkConversation *gtkconv;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5592 GaimConvWindow *win;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5593
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5594 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
5595 return;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5596
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5597 /* 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
5598 for (l = gaim_get_ims(); l != NULL; l = l->next) {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5599 conv = (GaimConversation *)l->data;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5600 gtkconv = GAIM_GTK_CONVERSATION(conv);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5601 gtkconv->u.im->animate = (gboolean)value;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5602 }
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5603
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5604 /* 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
5605 for (l = gaim_get_windows(); l != NULL; l = l->next) {
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5606 win = (GaimConvWindow *)l->data;
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5607 conv = gaim_conv_window_get_active_conversation(win);
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8177
diff changeset
5608 gaim_gtkconv_update_buddy_icon(conv);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5609 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5610 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5611
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5612 static void
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5613 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
5614 gpointer data)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5615 {
5881
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5616 GList *l;
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5617
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5618 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5619 GaimConversation *conv = l->data;
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5620
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5621 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5622 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon);
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5623 }
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5624 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5625
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5680
diff changeset
5626 static void
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
5627 chat_button_type_pref_cb(const char *name, GaimPrefType type,
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
5628 gpointer value, gpointer data)
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5629 {
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5630 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5631 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5632 GaimGtkConversation *gtkconv;
7996
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
5633
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
5634 for (l = gaim_get_chats(); l != NULL; l = l->next) {
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
5635 conv = (GaimConversation *)l->data;
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
5636 gtkconv = GAIM_GTK_CONVERSATION(conv);
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
5637
334ab1319406 [gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents: 7995
diff changeset
5638 setup_chat_buttons(conv, gtk_widget_get_parent(gtkconv->send));
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5639 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5640 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5641
7561
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5642 static void
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5643 conv_placement_pref_cb(const char *name, GaimPrefType type,
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5644 gpointer value, gpointer data)
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5645 {
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5646 GaimConvPlacementFunc func;
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5647
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5648 if (strcmp(name, "/gaim/gtk/conversations/placement"))
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5649 return;
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5650
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5651 func = gaim_conv_placement_get_fnc(value);
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5652
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5653 if (func == NULL)
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5654 return;
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5655
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5656 gaim_conv_placement_set_current_func(func);
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5657 }
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5658
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5659 void
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
5660 gaim_gtk_conversations_init(void)
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5661 {
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5662 /* Conversations */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5663 gaim_prefs_add_none("/gaim/gtk/conversations");
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5664 gaim_prefs_add_bool("/gaim/gtk/conversations/icons_on_tabs", TRUE);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5665 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5666 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5667 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5668 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5669 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5670 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5671 gaim_prefs_add_bool("/gaim/gtk/conversations/send_strikethrough", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5672 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5673 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5674 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5675 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5676 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5677 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5678 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5679 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5680 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5681 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5682 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5683 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5684 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5685 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE);
5743
af159a5bbaa0 [gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
5686 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5687 gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE);
7561
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5688 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last");
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5689 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5690 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5691 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", "");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5692 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5693 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5694 gaim_prefs_add_int("/gaim/gtk/conversations/tab_side", GTK_POS_TOP);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5695
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5696 /* Conversations -> Chat */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5697 gaim_prefs_add_none("/gaim/gtk/conversations/chat");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5698 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type",
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5699 GAIM_BUTTON_TEXT_IMAGE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5700 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5701 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/old_tab_complete", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5702 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/raise_on_events", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5703 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5704 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5705 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5706 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5707
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5708 /* Conversations -> IM */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5709 gaim_prefs_add_none("/gaim/gtk/conversations/im");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5710 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type",
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5711 GAIM_BUTTON_TEXT_IMAGE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5712 gaim_prefs_add_bool("/gaim/gtk/conversations/im/animate_buddy_icons", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5713 gaim_prefs_add_bool("/gaim/gtk/conversations/im/hide_on_send", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5714 gaim_prefs_add_bool("/gaim/gtk/conversations/im/raise_on_events", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5715 gaim_prefs_add_bool("/gaim/gtk/conversations/im/show_buddy_icons", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5716 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5717 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5718 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5719
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5720 /* Connect callbacks. */
6398
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5721 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes",
c9894c0fbc6f [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5722 escape_closes_pref_cb, NULL);
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5723 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs",
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5724 icons_on_tabs_pref_cb, NULL);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5725 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs",
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5726 close_on_tabs_pref_cb, NULL);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5727 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5728 show_smileys_pref_cb, NULL);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5729 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5730 show_timestamps_pref_cb, NULL);
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5731 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar",
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7322
diff changeset
5732 show_formatting_toolbar_pref_cb, NULL);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5733 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5734 spellcheck_pref_cb, NULL);
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5735 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5736 tab_side_pref_cb, NULL);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5737
7561
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5738 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement",
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5739 conv_placement_pref_cb, NULL);
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5740 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement");
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5741
cdfdbabd3266 [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
5742
6725
e62a504c83d0 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5743
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5744 /* IM callbacks */
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5745 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5746 im_button_type_pref_cb, NULL);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5747 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5748 animate_buddy_icons_pref_cb, NULL);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5749 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5750 show_buddy_icons_pref_cb, NULL);
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5751
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5752
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5753 /* Chat callbacks */
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5754 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5755 chat_button_type_pref_cb, NULL);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5756 }