src/gtkconv.c

Tue, 17 Aug 2004 02:52:13 +0000

author
Nathan Fredrickson <nathan@silverorange.com>
date
Tue, 17 Aug 2004 02:52:13 +0000
changeset 9770
d61fe8dcb6d9
parent 9766
2371af5578b6
child 9791
f5c5bda0b96b
permissions
-rw-r--r--

[gaim-migrate @ 10638]
(22:52:45) noif: LSchiere: one last addition to my chat-info-defaults
patch... this removes the old defaulting mechanism which only jabber used
and accomplishes the same thing through the new defaulting mechanism. It
also changes the "Group" to "Room" for oscar chats to avoid having two
fields labelled "Group".

committer: Luke Schierer <lschiere@pidgin.im>

5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1 /**
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2 * @file gtkconv.h GTK+ Conversation API
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
3 * @ingroup gtkui
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8037
diff changeset
5 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8037
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8037
diff changeset
7 * source distribution.
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
8 *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * (at your option) any later version.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * GNU General Public License for more details.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
24 #include "gtkinternal.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
25
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26 #ifndef _WIN32
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
27 # include <X11/Xlib.h>
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
28 #endif
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
29
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 #ifdef USE_GTKSPELL
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
31 # include <gtkspell/gtkspell.h>
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
32 # ifdef _WIN32
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
33 # include "wspell.h"
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
34 # endif
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 #endif
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
36
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 #include <gdk/gdkkeysyms.h>
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
38
9699
d1ca5dd91cc2 [gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents: 9696
diff changeset
39 #include "account.h"
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
40 #include "cmds.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
41 #include "debug.h"
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
42 #include "imgstore.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
43 #include "log.h"
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
44 #include "notify.h"
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
45 #include "prefs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
46 #include "prpl.h"
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
47 #include "request.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
48 #include "sound.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
49 #include "util.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
50
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
51 #include "dnd-hints.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
52 #include "gtkblist.h"
5717
2f3a377de638 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
53 #include "gtkconv.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9706
diff changeset
54 #include "gtkdialogs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
55 #include "gtkimhtml.h"
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
56 #include "gtkimhtmltoolbar.h"
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
57 #include "gtklog.h"
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
58 #include "gtkpounce.h"
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
59 #include "gtkprivacy.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
60 #include "gtkutils.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
61 #include "stock.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
62
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
63 /* XXX */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
64 #include "gaim.h"
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
66 #define AUTO_RESPONSE "&lt;AUTO-REPLY&gt; : "
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
67
7990
0aff6a730e7f [gaim-migrate @ 8667]
Nathan Walp <nwalp@pidgin.im>
parents: 7988
diff changeset
68 #define SEND_COLOR "#16569E"
7855
272c6a3311d1 [gaim-migrate @ 8509]
Sean Egan <seanegan@pidgin.im>
parents: 7854
diff changeset
69 #define RECV_COLOR "#A82F2F"
7854
b8594b759a30 [gaim-migrate @ 8508]
Sean Egan <seanegan@pidgin.im>
parents: 7853
diff changeset
70
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71 static char nick_colors[][8] = {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 "#ba55d3", /* Medium Orchid */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 "#ee82ee", /* Violet */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 "#c715b4", /* Medium Violet Red */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 "#ff69b4", /* Hot Pink */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76 "#ff6347", /* Tomato */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77 "#fa8c00", /* Dark Orange */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 "#fa8072", /* Salmon */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 "#b22222", /* Fire Brick */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 "#f4a460", /* Sandy Brown */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 "#cd5c5c", /* Indian Red */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 "#bc8f8f", /* Rosy Brown */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 "#f0e68c", /* Khaki */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 "#bdb76b", /* Dark Khaki */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 "#228b22", /* Forest Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 "#9acd32", /* Yellow Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 "#32cd32", /* Lime Green */
7755
a08288ab4e5f [gaim-migrate @ 8400]
Mark Doliner <markdoliner@pidgin.im>
parents: 7751
diff changeset
88 "#3cb371", /* Medium Sea Green (Medium Sea Green?! What are we women?!) */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89 "#2e8b57", /* Sea Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90 "#8fbc8f", /* Dark Sea Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91 "#66cdaa", /* Medium Aquamarine */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 "#5f9ea0", /* Cadet Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 "#48d1cc", /* Medium Turquoise */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 "#00ced1", /* Dark Turquoise */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 "#4682b4", /* Stell Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 "#00bfff", /* Deep Sky Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97 "#1690ff", /* Dodger Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 "#4169ff", /* Royal Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 "#6a5acd", /* Slate Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
100 "#6495ed", /* Cornflower Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101 "#708090", /* Slate gray */
7995
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
102 "#2f4f4f", /* Dark Slate Gray */
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
103 "#ff8c00", /* Dark Orange */
8535
c1c02521fd77 [gaim-migrate @ 9274]
Luke Schierer <lschiere@pidgin.im>
parents: 8515
diff changeset
104 "#006400", /* DarkGreen */
c1c02521fd77 [gaim-migrate @ 9274]
Luke Schierer <lschiere@pidgin.im>
parents: 8515
diff changeset
105 "#8b4513", /* SaddleBrown */
c1c02521fd77 [gaim-migrate @ 9274]
Luke Schierer <lschiere@pidgin.im>
parents: 8515
diff changeset
106 "#8b8989", /* snow4 */
c1c02521fd77 [gaim-migrate @ 9274]
Luke Schierer <lschiere@pidgin.im>
parents: 8515
diff changeset
107 "#7d26cd", /* purple3 */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108 };
6291
ac476ede1f3a [gaim-migrate @ 6790]
Luke Schierer <lschiere@pidgin.im>
parents: 6244
diff changeset
109
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
112 typedef struct
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 GtkWidget *window;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116 GtkWidget *entry;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117 GtkWidget *message;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
119 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
120
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
121 } InviteBuddyInfo;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
122
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123 static GtkWidget *invite_dialog = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
124
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125 /* Prototypes. <-- because Paco-Paco hates this comment. */
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
126 static void got_typing_keypress(GaimConversation *conv, gboolean first);
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
127 static GList *generate_invite_user_names(GaimConnection *gc);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
128 static void add_chat_buddy_common(GaimConversation *conv,
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
129 const char *name);
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
130 static gboolean tab_complete(GaimConversation *conv);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
131 static void update_typing_icon(GaimConversation *conv);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
132 static gboolean update_send_as_selection(GaimConvWindow *win);
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
133 static char *item_factory_translate_func (const char *path, gpointer func_data);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
134
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
135 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136 * Callbacks
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
137 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
138 static gint
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
141 GaimConvWindow *win = (GaimConvWindow *)d;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
142
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
143 gaim_conv_window_destroy(win);
4361
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
144
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
145 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
146 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
147
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
148 static gint
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
149 close_conv_cb(GtkWidget *w, gpointer d)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
150 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
151 GaimConversation *conv = (GaimConversation *)d;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
152
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
153 gaim_conversation_destroy(conv);
4361
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
154
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
155 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
156 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
157
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
158 static gboolean
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
159 size_allocate_cb(GtkWidget *w, GtkAllocation *allocation, GaimConversation *conv)
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
160 {
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
161 GaimGtkConversation *gtkconv;
9048
f90170cd1708 [gaim-migrate @ 9824]
Sean Egan <seanegan@pidgin.im>
parents: 9041
diff changeset
162 GaimConvWindow *win = gaim_conversation_get_window(conv);
9459
72399a7d7e29 [gaim-migrate @ 10283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9443
diff changeset
163 gboolean saveheight;
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
164
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
165 if (!GTK_WIDGET_VISIBLE(w))
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
166 return FALSE;
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
167
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
168 if (!GAIM_IS_GTK_CONVERSATION(conv))
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
169 return FALSE;
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
170
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
171 gtkconv = GAIM_GTK_CONVERSATION(conv);
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
172
9459
72399a7d7e29 [gaim-migrate @ 10283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9443
diff changeset
173 /* we only save the new height if the formatting toolbar visibility matches the pref */
72399a7d7e29 [gaim-migrate @ 10283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9443
diff changeset
174 saveheight = (gtkconv->show_formatting_toolbar == gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar"));
72399a7d7e29 [gaim-migrate @ 10283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9443
diff changeset
175
9048
f90170cd1708 [gaim-migrate @ 9824]
Sean Egan <seanegan@pidgin.im>
parents: 9041
diff changeset
176 /* I find that I resize the window when it has a bunch of conversations in it, mostly so that the tab bar
f90170cd1708 [gaim-migrate @ 9824]
Sean Egan <seanegan@pidgin.im>
parents: 9041
diff changeset
177 * will fit, but then I don't want new windows taking up the entire screen. I check to see if there is only one
f90170cd1708 [gaim-migrate @ 9824]
Sean Egan <seanegan@pidgin.im>
parents: 9041
diff changeset
178 * conversation in the window. This way we'll be setting new windows to the size of the last resized new window. */
f90170cd1708 [gaim-migrate @ 9824]
Sean Egan <seanegan@pidgin.im>
parents: 9041
diff changeset
179
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
180 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
181 {
9048
f90170cd1708 [gaim-migrate @ 9824]
Sean Egan <seanegan@pidgin.im>
parents: 9041
diff changeset
182 if (w == gtkconv->sw && (gaim_conv_window_get_conversation_count(win) == 1))
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
183 {
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
184 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_width", allocation->width);
9459
72399a7d7e29 [gaim-migrate @ 10283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9443
diff changeset
185 if (saveheight)
72399a7d7e29 [gaim-migrate @ 10283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9443
diff changeset
186 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_height", allocation->height);
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
187 }
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
188 if (w == gtkconv->entry)
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
189 gaim_prefs_set_int("/gaim/gtk/conversations/im/entry_height", allocation->height);
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
190 }
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
191 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
192 {
9048
f90170cd1708 [gaim-migrate @ 9824]
Sean Egan <seanegan@pidgin.im>
parents: 9041
diff changeset
193 if (w == gtkconv->sw && (gaim_conv_window_get_conversation_count(win) == 1))
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
194 {
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
195 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_width", allocation->width);
9459
72399a7d7e29 [gaim-migrate @ 10283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9443
diff changeset
196 if (saveheight)
72399a7d7e29 [gaim-migrate @ 10283]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9443
diff changeset
197 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_height", allocation->height);
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
198 }
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
199 if (w == gtkconv->entry)
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
200 gaim_prefs_set_int("/gaim/gtk/conversations/chat/entry_height", allocation->height);
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
201 }
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
202
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
203 return FALSE;
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
204 }
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
205
7446
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
206 /* Courtesy of Galeon! */
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
207 static void
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
208 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state)
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
209 {
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
210 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE)
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
211 gtk_widget_set_state(widget, GTK_STATE_NORMAL);
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
212 }
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
213
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
214 static void
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
215 default_formatize(GaimConversation *conv)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
216 {
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
217 GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
218 GaimConnection *gc = gaim_conversation_get_gc(conv);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
219
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
220 if (gc && gc->flags & GAIM_CONNECTION_HTML)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
221 {
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
222 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_formatting"))
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
223 {
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
224 char *color;
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
225 GdkColor fg_color, bg_color;
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
226
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
227 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold"))
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
228 gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry));
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
229
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
230 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic"))
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
231 gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry));
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
232
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
233 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline"))
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
234 gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry));
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
235
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
236 gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry),
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
237 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"));
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
238
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
239 if (!(gc->flags & GAIM_CONNECTION_NO_FONTSIZE))
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
240 gtk_imhtml_font_set_size(GTK_IMHTML(c->entry),
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
241 gaim_prefs_get_int("/gaim/gtk/conversations/font_size"));
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
242
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
243 if(strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), "") != 0)
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
244 {
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
245 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"),
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
246 &fg_color);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
247 color = g_strdup_printf("#%02x%02x%02x",
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
248 fg_color.red / 256,
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
249 fg_color.green / 256,
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
250 fg_color.blue / 256);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
251 }
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
252 else
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
253 color = g_strdup("");
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
254
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
255 gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
256 g_free(color);
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
257
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
258 if(!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) &&
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
259 strcmp(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), "") != 0)
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
260 {
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
261 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"),
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
262 &bg_color);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
263 color = g_strdup_printf("#%02x%02x%02x",
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
264 bg_color.red / 256,
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
265 bg_color.green / 256,
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
266 bg_color.blue / 256);
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
267 }
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
268 else
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
269 color = g_strdup("");
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
270
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
271 gtk_imhtml_toggle_backcolor(GTK_IMHTML(c->entry), color);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
272 g_free(color);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
273 }
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
274
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
275
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
276 if (gc->flags & GAIM_CONNECTION_FORMATTING_WBFO)
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
277 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(c->entry), TRUE);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
278 else
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
279 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(c->entry), FALSE);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
280 }
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
281 }
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
282
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
283 static const char *
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
284 gaim_gtk_get_cmd_prefix(void)
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
285 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
286 return "/";
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
287 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
288
9167
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
289 static GaimCmdRet
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
290 me_command_cb(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
291 const char *cmd, char **args, char **error, void *data)
9167
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
292 {
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
293 char *tmp;
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
294
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
295 tmp = g_strdup_printf("/me %s", args[0]);
9175
50bd82a24830 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
296
9167
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
297 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
298 gaim_conv_im_send(GAIM_CONV_IM(conv), tmp);
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
299 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
300 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), tmp);
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
301
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
302 g_free(tmp);
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
303 return GAIM_CMD_RET_OK;
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
304 }
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
305
9212
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
306 static GaimCmdRet
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
307 debug_command_cb(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
308 const char *cmd, char **args, char **error, void *data)
9212
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
309 {
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
310 char *tmp, *markup;
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
311 GaimCmdStatus status;
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
312
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
313 if (!g_ascii_strcasecmp(args[0], "version")) {
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
314 tmp = g_strdup_printf(_("me is using Gaim v%s."), VERSION);
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
315 markup = gaim_escape_html(tmp);
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
316
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
317 status = gaim_cmd_do_command(conv, tmp, markup, error);
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
318
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
319 g_free(tmp);
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
320 g_free(markup);
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
321 return status;
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
322 } else {
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
323 gaim_conversation_write(conv, NULL, _("Supported debug options are: version"),
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
324 GAIM_MESSAGE_NO_LOG|GAIM_MESSAGE_ERROR, time(NULL));
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
325 return GAIM_CMD_STATUS_OK;
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
326 }
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
327 }
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
328
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
329 static GaimCmdRet
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
330 help_command_cb(GaimConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
331 const char *cmd, char **args, char **error, void *data)
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
332 {
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
333 GList *l, *text;
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
334 GString *s;
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
335
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
336 if (args[0] != NULL) {
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
337 s = g_string_new("");
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
338 text = gaim_cmd_help(conv, args[0]);
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
339
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
340 if (text) {
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
341 for (l = text; l; l = l->next)
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
342 if (l->next)
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
343 g_string_append_printf(s, "/%s\n", (char *)l->data);
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
344 else
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
345 g_string_append_printf(s, "/%s", (char *)l->data);
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
346 } else {
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
347 g_string_append(s, _("No such command (in this context)."));
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
348 }
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
349 } else {
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
350 s = g_string_new(_("Use \"/help &lt;command&gt;\" for help on a specific command.\n"
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
351 "The following commands are available in this context:\n"));
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
352
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
353 text = gaim_cmd_list(conv);
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
354 for (l = text; l; l = l->next)
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
355 if (l->next)
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
356 g_string_append_printf(s, "%s, ", (char *)l->data);
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
357 else
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
358 g_string_append_printf(s, "%s.", (char *)l->data);
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
359 }
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
360
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
361 gaim_conversation_write(conv, NULL, s->str, GAIM_MESSAGE_NO_LOG, time(NULL));
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
362 g_string_free(s, TRUE);
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
363
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
364 return GAIM_CMD_STATUS_OK;
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
365 }
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
366
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
367 static void
9374
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
368 send_history_add(GaimConversation *conv, const char *message)
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
369 {
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
370 GList *first;
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
371
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
372 first = g_list_first(conv->send_history);
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
373
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
374 if (first->data)
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
375 g_free(first->data);
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
376
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
377 first->data = g_strdup(message);
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
378
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
379 conv->send_history = g_list_prepend(first, NULL);
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
380 }
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
381
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
382 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
383 send_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
385 GaimGtkConversation *gtkconv;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
386 char *cmd;
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
387 const char *prefix;
8655
3ee9edd2a282 [gaim-migrate @ 9407]
Mark Doliner <markdoliner@pidgin.im>
parents: 8633
diff changeset
388 GaimAccount *account;
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
389 GaimConnection *gc;
8448
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
390 char *buf, *clean;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392 gtkconv = GAIM_GTK_CONVERSATION(conv);
8655
3ee9edd2a282 [gaim-migrate @ 9407]
Mark Doliner <markdoliner@pidgin.im>
parents: 8633
diff changeset
393 account = gaim_conversation_get_account(conv);
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
394 prefix = gaim_gtk_get_cmd_prefix();
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
395
9471
20a1f9006905 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
396 if (!gaim_account_is_connected(account))
20a1f9006905 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
397 return;
20a1f9006905 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
398
9474
04097a64398f [gaim-migrate @ 10299]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9472
diff changeset
399 if ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) &&
04097a64398f [gaim-migrate @ 10299]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9472
diff changeset
400 gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)))
9471
20a1f9006905 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
401 return;
20a1f9006905 [gaim-migrate @ 10296]
Tim Ringenbach <marv@pidgin.im>
parents: 9470
diff changeset
402
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
403 if(gaim_prefs_get_bool("/gaim/gtk/conversations/enable_commands")) {
9602
a05f4a5bae72 [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
404 GtkTextIter start;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
405 cmd = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry), NULL, NULL);
9602
a05f4a5bae72 [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
406 gtk_text_buffer_get_start_iter(GTK_IMHTML(gtkconv->entry)->text_buffer, &start);
a05f4a5bae72 [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
407
a05f4a5bae72 [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
408 if(cmd && (strncmp(cmd, prefix, strlen(prefix)) == 0)
a05f4a5bae72 [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
409 && !gtk_text_iter_get_child_anchor(&start)) {
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
410 GaimCmdStatus status;
9374
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
411 char *error, *cmdline, *markup, *send_history;
9602
a05f4a5bae72 [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
412 GtkTextIter end;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
413
9374
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
414 send_history = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
415 send_history_add(conv, send_history);
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
416 g_free(send_history);
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
417
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
418 cmdline = cmd + strlen(prefix);
9602
a05f4a5bae72 [gaim-migrate @ 10445]
Tim Ringenbach <marv@pidgin.im>
parents: 9597
diff changeset
419
9175
50bd82a24830 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
420 gtk_text_iter_forward_chars(&start, g_utf8_strlen(prefix, -1));
50bd82a24830 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
421 gtk_text_buffer_get_end_iter(GTK_IMHTML(gtkconv->entry)->text_buffer, &end);
50bd82a24830 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
422 markup = gtk_imhtml_get_markup_range(GTK_IMHTML(gtkconv->entry), &start, &end);
50bd82a24830 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
423 status = gaim_cmd_do_command(conv, cmdline, markup, &error);
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
424 g_free(cmd);
9175
50bd82a24830 [gaim-migrate @ 9970]
Tim Ringenbach <marv@pidgin.im>
parents: 9167
diff changeset
425 g_free(markup);
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
426
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
427 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
428 default_formatize(conv);
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
429
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
430 switch(status) {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
431 case GAIM_CMD_STATUS_OK:
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
432 return;
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
433 case GAIM_CMD_STATUS_NOT_FOUND:
9212
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
434 gaim_conversation_write(conv, "", _("No such command. If you didn't mean "
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
435 "to type a command, you can turn "
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
436 "commands off from Tools->"
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
437 "Preferences->Interface->Conversation"
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
438 "->Enable \"slash\" commands."),
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
439 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
440 return;
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
441 case GAIM_CMD_STATUS_WRONG_ARGS:
9212
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
442 gaim_conversation_write(conv, "", _("Syntax Error: You typed the wrong number of arguments "
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
443 "to that command. If you didn't mean to type a command, "
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
444 "you can turn commands off from Tools->Preferences->"
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
445 "Interface->Conversation->Enable \"slash\" commands."),
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
446 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
447 return;
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
448 case GAIM_CMD_STATUS_FAILED:
9212
c8791bbbbbaf [gaim-migrate @ 10007]
Tim Ringenbach <marv@pidgin.im>
parents: 9188
diff changeset
449 gaim_conversation_write(conv, "", error ? error : _("Your command failed for an unknown reason."),
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
450 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
451 if(error)
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
452 g_free(error);
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
453 return;
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
454 case GAIM_CMD_STATUS_WRONG_TYPE:
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
455 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM)
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
456 gaim_conversation_write(conv, "", _("That command only works in Chats, not IMs."),
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
457 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
458 else
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
459 gaim_conversation_write(conv, "", _("That command only works in IMs, not Chats."),
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
460 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
461 return;
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
462 case GAIM_CMD_STATUS_WRONG_PRPL:
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
463 gaim_conversation_write(conv, "", _("That command doesn't work on this protocol."),
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
464 GAIM_MESSAGE_NO_LOG, time(NULL));
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
465 return;
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
466 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
467 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
468
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
469 g_free(cmd);
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
470 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
471
8655
3ee9edd2a282 [gaim-migrate @ 9407]
Mark Doliner <markdoliner@pidgin.im>
parents: 8633
diff changeset
472
8442
e5d2b1c684bb [gaim-migrate @ 9172]
Tim Ringenbach <marv@pidgin.im>
parents: 8439
diff changeset
473 buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
474 clean = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry), NULL, NULL);
8448
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
475
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
476 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
477
8448
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
478 if (strlen(clean) == 0) {
bde2cff7d4d6 [gaim-migrate @ 9178]
Kevin Stange <kstange@pidgin.im>
parents: 8442
diff changeset
479 g_free(clean);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
480 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
481 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
482
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
483 gc = gaim_account_get_connection(account);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
484 if (gc && (gc->flags & GAIM_CONNECTION_NO_NEWLINES)) {
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
485 char **bufs;
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
486 int i;
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
487
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
488 bufs = gtk_imhtml_get_markup_lines(GTK_IMHTML(gtkconv->entry));
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
489 for (i = 0; bufs[i]; i++) {
9374
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
490 send_history_add(conv, bufs[i]);
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
491 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
492 gaim_conv_im_send(GAIM_CONV_IM(conv), bufs[i]);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
493 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
494 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), bufs[i]);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
495 }
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
496
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
497 g_strfreev(bufs);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
498
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
499 } else {
9374
833f6d240c40 [gaim-migrate @ 10182]
Tim Ringenbach <marv@pidgin.im>
parents: 9332
diff changeset
500 send_history_add(conv, buf);
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
501 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
502 gaim_conv_im_send(GAIM_CONV_IM(conv), buf);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
503 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
504 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
505 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
506
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
507 g_free(clean);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
508 g_free(buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
509
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
510 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
511 default_formatize(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
512 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
513
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
514 static void
7928
0a3cfb31afee [gaim-migrate @ 8599]
Mark Doliner <markdoliner@pidgin.im>
parents: 7927
diff changeset
515 add_remove_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
516 {
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
517 GaimAccount *account;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
518 const char *name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
520 account = gaim_conversation_get_account(conv);
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
521 name = gaim_conversation_get_name(conv);
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
522
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
523 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
524 GaimBuddy *b;
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
525
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
526 b = gaim_find_buddy(account, name);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
527 if (b != NULL)
9730
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9728
diff changeset
528 gaim_gtkdialogs_remove_buddy(b);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
529 else if (account != NULL && gaim_account_is_connected(account))
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
530 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL);
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
531 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
532 GaimChat *c;
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
533
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
534 c = gaim_blist_find_chat(account, name);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
535 if (c != NULL)
9730
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9728
diff changeset
536 gaim_gtkdialogs_remove_chat(c);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
537 else if (account != NULL && gaim_account_is_connected(account))
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9750
diff changeset
538 gaim_blist_request_add_chat(account, NULL, NULL, name);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
539 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
540
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
542 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543
7975
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
544 static void chat_do_info(GaimConversation *conv, const char *who)
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
545 {
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
546 GaimPluginProtocolInfo *prpl_info = NULL;
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
547 GaimConnection *gc;
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
548
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
549 if ((gc = gaim_conversation_get_gc(conv))) {
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
550 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
551
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
552 /*
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
553 * If there are special needs for getting info on users in
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
554 * buddy chat "rooms"...
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
555 */
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
556 if (prpl_info->get_cb_info != NULL)
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
557 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
558 prpl_info->get_cb_info(gc,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
559 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
560 }
7975
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
561 else
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
562 prpl_info->get_info(gc, who);
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
563 }
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
564 }
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
565
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
566
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
567 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
568 info_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
569 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
570 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
571
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
572 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
573
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
574 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
575 serv_get_info(gaim_conversation_get_gc(conv),
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
576 gaim_conversation_get_name(conv));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
577
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
578 gtk_widget_grab_focus(gtkconv->entry);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
579 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
580 /* Get info of the person currently selected in the GtkTreeView */
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
581 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
582 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
583 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
584 GtkTreeSelection *sel;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
585 char *name;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
586
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
587 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
588
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
589 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
590 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
591
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
592 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
593 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
594 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
595 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
596
7975
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
597 chat_do_info(conv, name);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
598 g_free(name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
599 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
600 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
601
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
602 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
603 warn_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
604 {
9714
589046af53cb [gaim-migrate @ 10575]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
605 gaim_gtkdialogs_warn(gaim_conversation_get_gc(conv),
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
606 gaim_conversation_get_name(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
607
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
608 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
609 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
610
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
611 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
612 block_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
613 {
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
614 GaimAccount *account;
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
615
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
616 account = gaim_conversation_get_account(conv);
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
617
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
618 if (account != NULL && gaim_account_is_connected(account))
6399
36eb1f7411fa [gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents: 6398
diff changeset
619 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
620
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
621 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
622 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
623
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
624 static void
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
625 send_file_cb(GtkWidget *widget, GaimConversation *conv)
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
626 {
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
627 serv_send_file(gaim_conversation_get_gc(conv), gaim_conversation_get_name(conv), NULL);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
628 }
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
629
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
630 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
631 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
632 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
633 const char *buddy, *message;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
634 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
635
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
636 gtkconv = GAIM_GTK_CONVERSATION(info->conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
637
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
638 if (resp == GTK_RESPONSE_OK) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
639 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
640 message = gtk_entry_get_text(GTK_ENTRY(info->message));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
641
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
642 if (!g_ascii_strcasecmp(buddy, "")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
643 g_free(info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
644
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
645 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
646 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
647
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
648 serv_chat_invite(gaim_conversation_get_gc(info->conv),
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
649 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)),
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
650 message, buddy);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
651 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
652
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
653 gtk_widget_destroy(invite_dialog);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
654 invite_dialog = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
655
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
656 g_free(info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
657 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
658
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
659 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
660 invite_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
661 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
662 InviteBuddyInfo *info = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
663
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
664 if (invite_dialog == NULL) {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
665 GaimConnection *gc;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
666 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
667 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
668 GtkWidget *label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
669 GtkWidget *vbox, *hbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
670 GtkWidget *table;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
671 GtkWidget *img;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
672
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
673 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
674 GTK_ICON_SIZE_DIALOG);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
675
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
676 info = g_new0(InviteBuddyInfo, 1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
677 info->conv = conv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
678
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
679 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
680 win = gaim_conversation_get_window(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
681 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
682
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
683 /* Create the new dialog. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
684 invite_dialog = gtk_dialog_new_with_buttons(
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
685 _("Invite Buddy Into Chat Room"),
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
686 GTK_WINDOW(gtkwin->window), 0,
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
687 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
9443
cf79841d2705 [gaim-migrate @ 10264]
Christian Hammond <chipx86@chipx86.com>
parents: 9374
diff changeset
688 GAIM_STOCK_INVITE, GTK_RESPONSE_OK, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
689
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
690 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
691 GTK_RESPONSE_OK);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
692 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
693 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
694 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
695
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
696 /* Setup the outside spacing. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
697 vbox = GTK_DIALOG(invite_dialog)->vbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
698
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
699 gtk_box_set_spacing(GTK_BOX(vbox), 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
700 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
701
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
702 /* Setup the inner hbox and put the dialog's icon in it. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
703 hbox = gtk_hbox_new(FALSE, 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
704 gtk_container_add(GTK_CONTAINER(vbox), hbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
705 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
706 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
707
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
708 /* Setup the right vbox. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
709 vbox = gtk_vbox_new(FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
710 gtk_container_add(GTK_CONTAINER(hbox), vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
711
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
712 /* Put our happy label in it. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
713 label = gtk_label_new(_("Please enter the name of the user you wish "
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
714 "to invite, along with an optional invite "
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
715 "message."));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
716 gtk_widget_set_size_request(label, 350, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
717 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
718 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
719 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
720
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
721 /* hbox for the table, and to give it some spacing on the left. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
722 hbox = gtk_hbox_new(FALSE, 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
723 gtk_container_add(GTK_CONTAINER(vbox), hbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
724
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
725 /* Setup the table we're going to use to lay stuff out. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
726 table = gtk_table_new(2, 2, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
727 gtk_table_set_row_spacings(GTK_TABLE(table), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
728 gtk_table_set_col_spacings(GTK_TABLE(table), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
729 gtk_container_set_border_width(GTK_CONTAINER(table), 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
730 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
731
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
732 /* Now the Buddy label */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
733 label = gtk_label_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
734 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
735 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
736 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
737
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
738 /* Now the Buddy drop-down entry field. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
739 info->entry = gtk_combo_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
740 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
741 gtk_entry_set_activates_default(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
742 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
743
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
744 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
745 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
746
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
747 /* Fill in the names. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
748 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
749 generate_invite_user_names(gc));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
750
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
751
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
752 /* Now the label for "Message" */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
753 label = gtk_label_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
754 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
755 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
756 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
757
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
758
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
759 /* And finally, the Message entry field. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
760 info->message = gtk_entry_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
761 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
762
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
763 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
764 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
765
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
766 /* Connect the signals. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
767 g_signal_connect(G_OBJECT(invite_dialog), "response",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
768 G_CALLBACK(do_invite), info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
769 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
770
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
771 gtk_widget_show_all(invite_dialog);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
772
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
773 if (info != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
774 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
775 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
776
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
777 static void
7748
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
778 menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget)
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
779 {
9714
589046af53cb [gaim-migrate @ 10575]
Mark Doliner <markdoliner@pidgin.im>
parents: 9709
diff changeset
780 gaim_gtkdialogs_im();
7748
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
781 }
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
782
b7b0940aa0e3 [gaim-migrate @ 8393]
Ethan Blanton <elb@pidgin.im>
parents: 7741
diff changeset
783 static void
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
784 savelog_writefile_cb(void *user_data, const char *filename)
9489
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
785 {
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
786 GaimConversation *conv = (GaimConversation *)user_data;
9489
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
787 FILE *fp;
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
788 const char *name;
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
789
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
790 if ((fp = fopen(filename, "w+")) == NULL) {
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
791 gaim_notify_error(conv, NULL, _("Unable to open file."), NULL);
9489
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
792 return;
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
793 }
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
794
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
795 name = gaim_conversation_get_name(conv);
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
796 fprintf(fp, _("<h1>Conversation with %s</h1>\n"), name);
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
797 fprintf(fp, "%s", conv->history->str);
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
798 fclose(fp);
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
799 }
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
800
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
801 static void
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
802 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
803 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
804 GaimConvWindow *win = (GaimConvWindow *)data;
9489
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
805 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
806 gchar *buf;
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
807
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
808 buf = g_strdup_printf("%s.html", gaim_normalize(conv->account, conv->name));
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
809
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
810 gaim_request_file(conv, _("Save Conversation"), buf, TRUE,
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
811 G_CALLBACK(savelog_writefile_cb), NULL, conv);
9489
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
812
3ee8fdcdbac9 [gaim-migrate @ 10314]
Mark Doliner <markdoliner@pidgin.im>
parents: 9487
diff changeset
813 g_free(buf);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
814 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
815
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
816 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
817 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
818 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
819 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
820 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
821
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
822 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
823
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
824 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
825 gaim_conversation_get_account(conv));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
826 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
827
8974
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
828 static void
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
829 menu_clear_cb(gpointer data, guint action, GtkWidget *widget)
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
830 {
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
831 GaimConvWindow *win = (GaimConvWindow *)data;
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
832 GaimConversation *conv;
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
833 GaimGtkConversation *gtkconv;
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
834
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
835 conv = gaim_conv_window_get_active_conversation(win);
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
836 gtkconv = GAIM_GTK_CONVERSATION(conv);
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
837
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
838 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml));
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
839 g_string_free(conv->history, TRUE);
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
840 conv->history = g_string_new("");
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
841 }
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
842
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
843 struct _search {
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
844 GaimGtkConversation *gtkconv;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
845 GtkWidget *entry;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
846 };
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
847
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
848 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s)
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
849 {
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
850 switch (resp) {
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
851 case GTK_RESPONSE_OK:
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
852 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
853 gtk_entry_get_text(GTK_ENTRY(s->entry)));
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
854 break;
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
855
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
856 case GTK_RESPONSE_DELETE_EVENT:
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
857 case GTK_RESPONSE_CLOSE:
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
858 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml));
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
859 gtk_widget_destroy(s->gtkconv->dialogs.search);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
860 s->gtkconv->dialogs.search = NULL;
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
861 g_free(s);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
862 break;
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
863 }
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
864 }
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
865
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
866 static void
7751
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7748
diff changeset
867 menu_find_cb(gpointer data, guint action, GtkWidget *widget)
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
868 {
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
869 GaimConvWindow *win = (GaimConvWindow *)data;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
870 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
871 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
872 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
873 GtkWidget *hbox;
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
874 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
875 GTK_ICON_SIZE_DIALOG);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
876 GtkWidget *label;
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
877 struct _search *s;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
878
7798
f3aec2ae0bf9 [gaim-migrate @ 8444]
Ka-Hing Cheung <khc@pidgin.im>
parents: 7778
diff changeset
879 if (gtkconv->dialogs.search) {
f3aec2ae0bf9 [gaim-migrate @ 8444]
Ka-Hing Cheung <khc@pidgin.im>
parents: 7778
diff changeset
880 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search));
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
881 return;
7798
f3aec2ae0bf9 [gaim-migrate @ 8444]
Ka-Hing Cheung <khc@pidgin.im>
parents: 7778
diff changeset
882 }
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
883
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
884 s = g_malloc(sizeof(struct _search));
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
885 s->gtkconv = gtkconv;
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
886
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
887 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"),
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
888 GTK_WINDOW(gtkwin->window), GTK_DIALOG_DESTROY_WITH_PARENT,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
889 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
890 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
891 gtk_dialog_set_default_response(GTK_DIALOG(gtkconv->dialogs.search),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
892 GTK_RESPONSE_OK);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
893 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
894 G_CALLBACK(do_search_cb), s);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
895
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
896 gtk_container_set_border_width(GTK_CONTAINER(gtkconv->dialogs.search), 6);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
897 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
898 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
899 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
900 gtk_container_set_border_width(
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
901 GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
902
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
903 hbox = gtk_hbox_new(FALSE, 12);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
904 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
905 hbox);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
906 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
907
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
908 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
909 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
910 GTK_RESPONSE_OK, FALSE);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
911
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
912 label = gtk_label_new(NULL);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
913 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:"));
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
914 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
915
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
916 s->entry = gtk_entry_new();
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
917 gtk_entry_set_activates_default(GTK_ENTRY(s->entry), TRUE);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
918 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(s->entry));
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
919 g_signal_connect(G_OBJECT(s->entry), "changed",
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
920 G_CALLBACK(gaim_gtk_set_sensitive_if_input),
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
921 gtkconv->dialogs.search);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
922 gtk_box_pack_start(GTK_BOX(hbox), s->entry, FALSE, FALSE, 0);
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
923
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
924 gtk_widget_show_all(gtkconv->dialogs.search);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
925 gtk_widget_grab_focus(s->entry);
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
926 }
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
927
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
928 static void
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
929 menu_send_file_cb(gpointer data, guint action, GtkWidget *widget)
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
930 {
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
931 GaimConvWindow *win = (GaimConvWindow *)data;
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
932 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
933
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
934 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
935 serv_send_file(gaim_conversation_get_gc(conv), gaim_conversation_get_name(conv), NULL);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
936 }
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
937
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
938 }
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
939
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
940 static void
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
941 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
942 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
943 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
944 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
945
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
946 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
947
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
948 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv),
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
949 gaim_conversation_get_name(conv), NULL);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
950 }
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
951
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
952 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
953 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
954 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
955 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
956 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
957 GaimGtkConversation *gtkconv;
8756
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
958 GtkIMHtmlToolbar *toolbar;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
959
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
960 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
961 gtkconv = GAIM_GTK_CONVERSATION(conv);
8756
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
962 toolbar = GTK_IMHTMLTOOLBAR(gtkconv->toolbar);
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
963
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
964 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link),
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
965 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->link)));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
966 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
967
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
968 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
969 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
970 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
971 GaimConvWindow *win = (GaimConvWindow *)data;
8756
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
972 GaimConversation *conv;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
973 GaimGtkConversation *gtkconv;
8756
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
974 GtkIMHtmlToolbar *toolbar;
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
975
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
976 conv = gaim_conv_window_get_active_conversation(win);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
977 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win));
8756
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
978 toolbar = GTK_IMHTMLTOOLBAR(gtkconv->toolbar);
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
979
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
980 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image),
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
981 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->image)));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
982 }
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
983
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
984 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
985 menu_alias_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
986 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
987 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
988 GaimConversation *conv;
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
989 GaimAccount *account;
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
990 const char *name;
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
991
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
992 conv = gaim_conv_window_get_active_conversation(win);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
993 account = gaim_conversation_get_account(conv);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
994 name = gaim_conversation_get_name(conv);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
995
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
996 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
997 GaimBuddy *b;
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
998
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
999 b = gaim_find_buddy(account, name);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
1000 if (b != NULL)
9730
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9728
diff changeset
1001 gaim_gtkdialogs_alias_buddy(b);
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
1002 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
1003 GaimChat *c;
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
1004
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
1005 c = gaim_blist_find_chat(account, name);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
1006 if (c != NULL)
9730
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9728
diff changeset
1007 gaim_gtkdialogs_alias_chat(c);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1008 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1009 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1010
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1011 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1012 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1013 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1014 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1015 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1016
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1017 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1018
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1019 info_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1020 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1021
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1022 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1023 menu_invite_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1024 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1025 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1026 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1027
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1028 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1029
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1030 invite_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1031 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1032
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1033 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1034 menu_warn_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1035 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1036 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1037 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1038
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1039 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1040
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1041 warn_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1042 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1043
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1044 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1045 menu_block_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1046 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1047 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1048 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1049
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1050 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1051
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1052 block_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1053 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1054
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1055 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1056 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1057 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1058 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1059 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1060
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1061 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1062
7928
0a3cfb31afee [gaim-migrate @ 8599]
Mark Doliner <markdoliner@pidgin.im>
parents: 7927
diff changeset
1063 add_remove_cb(NULL, conv);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1064 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1065
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1066 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1067 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1068 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1069 GaimConvWindow *win = (GaimConvWindow *)data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1070
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1071 close_conv_cb(NULL, gaim_conv_window_get_active_conversation(win));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1072 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1073
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1074 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1075 menu_logging_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1076 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1077 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1078 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1079
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1080 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1081
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1082 if (conv == NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1083 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1084
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1085 gaim_conversation_set_logging(conv,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1086 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1087 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1088
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1089 static void
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1090 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1091 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1092 GaimConvWindow *win = (GaimConvWindow *)data;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1093 GaimConversation *conv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1094 GaimGtkConversation *gtkconv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1095
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1096 conv = gaim_conv_window_get_active_conversation(win);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1097
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1098 if (conv == NULL)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1099 return;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1100
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1101 gtkconv = GAIM_GTK_CONVERSATION(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1102
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1103 gtkconv->show_formatting_toolbar =
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1104 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1105
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1106 if (gtkconv->show_formatting_toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
1107 gtk_widget_show(gtkconv->toolbar);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1108 else
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
1109 gtk_widget_hide(gtkconv->toolbar);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1110 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1111
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
1112 static void
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1113 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1114 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1115 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1116 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1117 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1118
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1119 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1120
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1121 if (!conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1122 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1123
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1124 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1125
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1126 gtkconv->make_sound =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1127 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1128 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1129
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1130 static void
9188
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1131 menu_timestamps_cb(gpointer data, guint action, GtkWidget *widget)
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1132 {
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1133 GaimConvWindow *win = (GaimConvWindow *)data;
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1134 GaimConversation *conv;
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1135 GaimGtkConversation *gtkconv;
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1136
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1137 conv = gaim_conv_window_get_active_conversation(win);
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1138
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1139 if (!conv)
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1140 return;
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1141
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1142 gtkconv = GAIM_GTK_CONVERSATION(conv);
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1143
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1144 gtkconv->show_timestamps =
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1145 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1146 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1147 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1148 }
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1149
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
1150 static void
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1151 chat_do_im(GaimConversation *conv, const char *who)
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1152 {
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1153 GaimPluginProtocolInfo *prpl_info = NULL;
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1154 char *real_who;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1155 GaimConversation *conv2;
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1156 GaimAccount *account;
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1157
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1158 account = gaim_conversation_get_account(conv);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1159
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1160 if(account && account->gc)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1161 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1162
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1163 if(prpl_info && prpl_info->get_cb_real_name)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1164 real_who = prpl_info->get_cb_real_name(account->gc,
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1165 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1166 else
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1167 real_who = g_strdup(who);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1168
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1169 if(!real_who)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1170 return;
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1171
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1172 conv2 = gaim_find_conversation_with_account(real_who, account);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1173
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1174 if (conv2 != NULL)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1175 gaim_conv_window_show(gaim_conversation_get_window(conv2));
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1176 else
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1177 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1178
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1179 g_free(real_who);
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1180 }
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1181
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1182
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1183 static void
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1184 chat_im_button_cb(GtkWidget *widget, GaimConversation *conv)
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1185 {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1186 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1187 GaimGtkChatPane *gtkchat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1188 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1189 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1190 GtkTreeSelection *sel;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
1191 char *name;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1192
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1193 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1194 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1195
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1196 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1197 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1198
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1199 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
1200 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1201 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1202 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1203
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
1204 chat_do_im(conv, name);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
1205 g_free(name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1206 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1207
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1208 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1209 ignore_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1210 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1211 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1212 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1213 GaimConvChat *chat;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1214 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1215 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1216 GtkTreeSelection *sel;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1217 const char *name;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1218
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1219 chat = GAIM_CONV_CHAT(conv);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1220 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1221 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1222
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1223 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1224 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1225
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1226 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) {
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
1227 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &name, -1);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1228 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1229 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1230 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1231 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1232
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1233 if (gaim_conv_chat_is_user_ignored(chat, name))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1234 gaim_conv_chat_unignore(chat, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1235 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1236 gaim_conv_chat_ignore(chat, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1237
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
1238 add_chat_buddy_common(conv, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1239 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1240
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1241 static void
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1242 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv)
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1243 {
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1244 const char *who = g_object_get_data(G_OBJECT(w), "user_data");
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1245
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1246 chat_do_im(conv, who);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1247 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1248
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1249 static void
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1250 menu_chat_send_file_cb(GtkWidget *w, GaimConversation *conv)
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1251 {
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1252 const char *who = g_object_get_data(G_OBJECT(w), "user_data");
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1253 GaimConnection *gc = gaim_conversation_get_gc(conv);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1254
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1255 serv_send_file(gc, who, NULL);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1256 }
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1257
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1258 static void
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1259 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1260 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1261 char *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1262
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1263 who = g_object_get_data(G_OBJECT(w), "user_data");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1264
7975
fe195aaa0144 [gaim-migrate @ 8652]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1265 chat_do_info(conv, who);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1266 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1267
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1268 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1269 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1270 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1271 GaimPluginProtocolInfo *prpl_info = NULL;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1272 GaimConnection *gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1273 char *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1274
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1275 gc = gaim_conversation_get_gc(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1276 who = g_object_get_data(G_OBJECT(w), "user_data");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1277
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1278 if (gc != NULL) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1279 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1280
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1281 /*
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1282 * May want to expand this to work similarly to menu_info_cb?
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1283 */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1284
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1285 if (prpl_info->get_cb_away != NULL)
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1286 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1287 prpl_info->get_cb_away(gc,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1288 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1289 }
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1290 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1291 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1292
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1293 static void
7928
0a3cfb31afee [gaim-migrate @ 8599]
Mark Doliner <markdoliner@pidgin.im>
parents: 7927
diff changeset
1294 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv)
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1295 {
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1296 GaimAccount *account;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1297 GaimBuddy *b;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1298 char *name;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1299
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1300 account = gaim_conversation_get_account(conv);
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1301 name = g_object_get_data(G_OBJECT(w), "user_data");
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1302 b = gaim_find_buddy(account, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1303
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1304 if (b != NULL)
9730
e59812364b8b [gaim-migrate @ 10591]
Mark Doliner <markdoliner@pidgin.im>
parents: 9728
diff changeset
1305 gaim_gtkdialogs_remove_buddy(b);
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1306 else if (account != NULL && gaim_account_is_connected(account))
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1307 gaim_blist_request_add_buddy(account, name, NULL, NULL);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1308
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1309 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1310 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1311
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1312 static GtkWidget *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1313 create_chat_menu(GaimConversation *conv, gchar *who,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1314 GaimPluginProtocolInfo *prpl_info, GaimConnection *gc)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1315 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1316 static GtkWidget *menu = NULL;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1317 GtkWidget *button;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1318
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1319 /*
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1320 * If a menu already exists, destroy it before creating a new one,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1321 * thus freeing-up the memory it occupied.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1322 */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1323 if (menu)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1324 gtk_widget_destroy(menu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1325
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1326 menu = gtk_menu_new();
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1327
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1328 button = gtk_menu_item_new_with_label(_("IM"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1329 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1330 G_CALLBACK(menu_chat_im_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1331 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1332 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1333 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1334
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1335 if (gc && prpl_info && prpl_info->send_file
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1336 && (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who))) {
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1337 button = gtk_menu_item_new_with_label(_("Send File"));
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1338 g_signal_connect(G_OBJECT(button), "activate",
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1339 G_CALLBACK(menu_chat_send_file_cb), conv);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1340 g_object_set_data(G_OBJECT(button), "user_data", who);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1341 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1342 gtk_widget_show(button);
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
1343 }
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
1344
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1345 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1346 button = gtk_menu_item_new_with_label(_("Un-Ignore"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1347 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1348 button = gtk_menu_item_new_with_label(_("Ignore"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1349
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1350 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1351 G_CALLBACK(ignore_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1352 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1353 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1354 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1355
8170
f034b2951a24 [gaim-migrate @ 8883]
Gary Kramlich <grim@pidgin.im>
parents: 8159
diff changeset
1356 if (gc && (prpl_info->get_info || prpl_info->get_cb_info)) {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1357 button = gtk_menu_item_new_with_label(_("Info"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1358 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1359 G_CALLBACK(menu_chat_info_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1360 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1361 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1362 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1363 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1364
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1365 if (gc && prpl_info->get_cb_away) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1366 button = gtk_menu_item_new_with_label(_("Get Away Msg"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1367 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1368 G_CALLBACK(menu_chat_get_away_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1369 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1370 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1371 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1372 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1373
8170
f034b2951a24 [gaim-migrate @ 8883]
Gary Kramlich <grim@pidgin.im>
parents: 8159
diff changeset
1374 /* XXX: jabber can only add buddies from here in certain circumstances */
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1375 /* Added by Jonas <jonas@birme.se> */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1376 if (gc) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1377 if (gaim_find_buddy(gc->account, who))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1378 button = gtk_menu_item_new_with_label(_("Remove"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1379 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1380 button = gtk_menu_item_new_with_label(_("Add"));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1381
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1382 g_signal_connect(G_OBJECT(button), "activate",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1383 G_CALLBACK(menu_chat_add_remove_cb), conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1384
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1385 g_object_set_data(G_OBJECT(button), "user_data", who);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1386 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1387 gtk_widget_show(button);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1388 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1389 /* End Jonas */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1390
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1391 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1392 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1393
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1394
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1395 static gint
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1396 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimConversation *conv)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1397 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1398 GaimGtkConversation *gtkconv;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1399 GaimPluginProtocolInfo *prpl_info = NULL;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1400 GaimGtkChatPane *gtkchat;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1401 GaimConnection *gc;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1402 GaimAccount *account;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1403 GtkTreeSelection *sel;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1404 GtkTreeIter iter;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1405 GtkTreeModel *model;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1406 GtkWidget *menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1407 gchar *who;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1408
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1409 gtkconv = GAIM_GTK_CONVERSATION(conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1410 gtkchat = gtkconv->u.chat;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1411 account = gaim_conversation_get_account(conv);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1412 gc = account->gc;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1413
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1414 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1415
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1416 if (gc != NULL)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1417 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1418
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1419 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1420 if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1421 return FALSE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1422
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
1423 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1424 menu = create_chat_menu (conv, who, prpl_info, gc);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1425 gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1426 gaim_gtk_treeview_popup_menu_position_func, widget,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1427 0, GDK_CURRENT_TIME);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1428
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1429 return TRUE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1430 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1431
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1432
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1433 static gint
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1434 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1435 GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1436 {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1437 GaimGtkConversation *gtkconv;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1438 GaimPluginProtocolInfo *prpl_info = NULL;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1439 GaimGtkChatPane *gtkchat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1440 GaimConnection *gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1441 GaimAccount *account;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1442 GtkTreePath *path;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1443 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1444 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1445 GtkTreeViewColumn *column;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1446 gchar *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1447 int x, y;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1448
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1449 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1450 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1451 account = gaim_conversation_get_account(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1452 gc = account->gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1453
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1454 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1455
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1456 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(gtkchat->list),
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1457 event->x, event->y, &path, &column, &x, &y);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1458
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1459 if (path == NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1460 return FALSE;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1461
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1462 if (gc != NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1463 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1464
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1465 gtk_tree_selection_select_path(GTK_TREE_SELECTION(
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1466 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1467
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1468 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
1469 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1470
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1471 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1472 chat_do_im(conv, who);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
1473 g_free(who);
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1474 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1475 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1476 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1477 event->button, event->time);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1478 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1479
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1480 return TRUE;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1481 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1482
8133
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1483 static void
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1484 move_to_next_unread_tab(GaimConversation *conv)
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1485 {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1486 GaimConversation *next_conv = NULL;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1487 GaimConvWindow *win;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1488 GList *l;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1489 int index, i;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1490
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1491 win = gaim_conversation_get_window(conv);
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1492 index = gaim_conversation_get_index(conv);
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1493
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1494 /* First check the tabs after this position. */
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1495 for (l = g_list_nth(gaim_conv_window_get_conversations(win), index);
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1496 l != NULL;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1497 l = l->next) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1498
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1499 next_conv = (GaimConversation *)l->data;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1500
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1501 if (gaim_conversation_get_unseen(next_conv) > 0)
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1502 break;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1503
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1504 next_conv = NULL;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1505 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1506
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1507 if (next_conv == NULL) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1508
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1509 /* Now check before this position. */
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1510 for (l = gaim_conv_window_get_conversations(win), i = 0;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1511 l != NULL && i < index;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1512 l = l->next) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1513
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1514 next_conv = (GaimConversation *)l->data;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1515
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1516 if (gaim_conversation_get_unseen(next_conv) > 0)
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1517 break;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1518
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1519 next_conv = NULL;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1520 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1521
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1522 if (next_conv == NULL) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1523 /* Okay, just grab the next conversation tab. */
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1524 if (index == gaim_conv_window_get_conversation_count(win) - 1)
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1525 next_conv = gaim_conv_window_get_conversation_at(win, 0);
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1526 else
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1527 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1528 next_conv = gaim_conv_window_get_conversation_at(win,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1529 index + 1);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1530 }
8133
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1531 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1532 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1533
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1534 if (next_conv != NULL && next_conv != conv) {
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1535 gaim_conv_window_switch_conversation(win,
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1536 gaim_conversation_get_index(next_conv));
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1537 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1538 }
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1539
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1540 static gboolean
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1541 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1542 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1543 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1544 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1545 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1546 GaimGtkWindow *gtkwin;
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1547 int numconvs;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1548 int curconv;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1549
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1550 conv = (GaimConversation *)data;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1551 gtkconv = GAIM_GTK_CONVERSATION(conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1552 win = gaim_conversation_get_window(conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1553 gtkwin = GAIM_GTK_WINDOW(win);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1554 numconvs = gaim_conv_window_get_conversation_count(win);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1555 curconv = gaim_conversation_get_index(conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1556
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1557 /* If CTRL was held down... */
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1558 if (event->state & GDK_CONTROL_MASK) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1559 switch (event->keyval) {
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1560 case GDK_Return:
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1561 case GDK_KP_Enter:
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1562 if (gaim_prefs_get_bool(
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1563 "/gaim/gtk/conversations/ctrl_enter_sends"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1564 {
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1565 send_cb(NULL, conv);
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1566
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1567 return TRUE;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1568 }
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1569 break;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1570
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1571 case GDK_Up:
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1572 if (!conv->send_history)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1573 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1574
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1575 if (!conv->send_history->prev) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1576 GtkTextIter start, end;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1577
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1578 if (conv->send_history->data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1579 g_free(conv->send_history->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1580
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1581 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1582 &start);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1583 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1584
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1585 conv->send_history->data =
8506
76ce3a78b130 [gaim-migrate @ 9242]
Gary Kramlich <grim@pidgin.im>
parents: 8496
diff changeset
1586 gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1587 }
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1588
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1589 if (conv->send_history->next &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1590 conv->send_history->next->data) {
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1591 GtkTextIter iter;
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1592 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1593
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1594 conv->send_history = conv->send_history->next;
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
1595 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1596 gtk_imhtml_append_text_with_images(
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1597 GTK_IMHTML(gtkconv->entry), conv->send_history->data,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1598 0, NULL);
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1599 /* this is mainly just a hack so the formatting at the
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1600 * cursor gets picked up. */
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1601 gtk_text_buffer_get_end_iter(buffer, &iter);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1602 gtk_text_buffer_move_mark_by_name(buffer, "insert", &iter);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1603 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1604
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1605 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1606 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1607
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1608 case GDK_Down:
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1609 if (!conv->send_history)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1610 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1611
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1612 if (conv->send_history->prev &&
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1613 conv->send_history->prev->data) {
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1614 GtkTextIter iter;
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1615 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1616
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1617 conv->send_history = conv->send_history->prev;
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1618 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1619 gtk_imhtml_append_text_with_images(
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1620 GTK_IMHTML(gtkconv->entry), conv->send_history->data,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1621 0, NULL);
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1622 /* this is mainly just a hack so the formatting at the
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1623 * cursor gets picked up. */
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1624 gtk_text_buffer_get_end_iter(buffer, &iter);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
1625 gtk_text_buffer_move_mark_by_name(buffer, "insert", &iter);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1626 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1627
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1628 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1629 break;
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1630
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1631 case GDK_Page_Down:
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1632 case ']':
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1633 gaim_conv_window_switch_conversation(win,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1634 (curconv + 1) % numconvs);
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1635
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1636 return TRUE;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1637 break;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1638
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1639 case GDK_Page_Up:
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
1640 case '[':
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1641 gaim_conv_window_switch_conversation(win,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1642 (curconv + numconvs - 1) % numconvs);
8133
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1643
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1644 return TRUE;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1645 break;
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1646
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1647 case GDK_Tab:
8133
f59df33a6155 [gaim-migrate @ 8838]
Mark Doliner <markdoliner@pidgin.im>
parents: 8123
diff changeset
1648 move_to_next_unread_tab(conv);
8108
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1649
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1650 return TRUE;
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1651 break;
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1652
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1653 case 'z':
7665e1fd72d1 [gaim-migrate @ 8809]
Mark Doliner <markdoliner@pidgin.im>
parents: 8106
diff changeset
1654 gtk_window_iconify(GTK_WINDOW(gtkwin->window));
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1655
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1656 return TRUE;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1657 break;
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1658
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1659 } /* End of switch */
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1660 }
8758
940afe5423a9 [gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents: 8756
diff changeset
1661
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1662 /* If ALT (or whatever) was held down... */
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1663 else if (event->state & GDK_MOD1_MASK)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1664 {
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8730
diff changeset
1665 /* XXX - Make sure the conv exists before switching to it */
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1666 if (event->keyval > '0' && event->keyval <= '9') {
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1667 int switchto = event->keyval - '1';
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1668 if (switchto < numconvs)
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1669 gaim_conv_window_switch_conversation(win, switchto);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1670
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1671 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1672 }
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1673 }
8758
940afe5423a9 [gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents: 8756
diff changeset
1674
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1675 /* If neither CTRL nor ALT were held down... */
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1676 else
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1677 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1678 switch (event->keyval)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1679 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1680 case GDK_Return:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1681 case GDK_KP_Enter:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1682 if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1683 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends"))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1684 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1685 send_cb(NULL, conv);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1686 return TRUE;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1687 }
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1688 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1689
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1690 case GDK_Tab:
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
1691 return tab_complete(conv);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1692 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1693
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1694 case GDK_Page_Up:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1695 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml));
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1696 return TRUE;
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1697 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1698
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1699 case GDK_Page_Down:
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1700 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml));
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1701 return TRUE;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1702 break;
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1703
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1704 }
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
1705 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1706
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1707 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1708 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1709
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1710 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1711 * NOTE:
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1712 * This guy just kills a single right click from being propagated any
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1713 * further. I have no idea *why* we need this, but we do ... It
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1714 * prevents right clicks on the GtkTextView in a convo dialog from
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1715 * going all the way down to the notebook. I suspect a bug in
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1716 * GtkTextView, but I'm not ready to point any fingers yet.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1717 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1718 static gboolean
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1719 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1720 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1721 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1722 /* Right single click */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1723 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1724
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1725 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1726 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1727
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1728 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1729 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1730
8173
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1731 /*
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1732 * If someone tries to type into the conversation backlog of a
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1733 * conversation window then we yank focus from the conversation backlog
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1734 * and give it to the text entry box so that people can type
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1735 * all the live long day and it will get entered into the entry box.
8e5c62d7f25f [gaim-migrate @ 8887]
Mark Doliner <markdoliner@pidgin.im>
parents: 8172
diff changeset
1736 */
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1737 static gboolean
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
1738 refocus_entry_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1739 {
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1740 GaimGtkConversation *gtkconv = data;
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1741
8237
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1742 /* If we have a valid key for the conversation display, then exit */
8224
3846a02b8d66 [gaim-migrate @ 8947]
Mark Doliner <markdoliner@pidgin.im>
parents: 8202
diff changeset
1743 if ((event->state & GDK_CONTROL_MASK) ||
8237
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1744 (event->keyval == GDK_F10) ||
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1745 (event->keyval == GDK_Shift_L) ||
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1746 (event->keyval == GDK_Shift_R) ||
ad93c98bb387 [gaim-migrate @ 8960]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8229
diff changeset
1747 (event->keyval == GDK_Escape) ||
8177
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1748 (event->keyval == GDK_Up) ||
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1749 (event->keyval == GDK_Down) ||
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1750 (event->keyval == GDK_Left) ||
8191
0c2d139d5f15 [gaim-migrate @ 8912]
Mark Doliner <markdoliner@pidgin.im>
parents: 8189
diff changeset
1751 (event->keyval == GDK_Right) ||
0c2d139d5f15 [gaim-migrate @ 8912]
Mark Doliner <markdoliner@pidgin.im>
parents: 8189
diff changeset
1752 (event->keyval == GDK_Home) ||
9297
75204ab6a6d7 [gaim-migrate @ 10100]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
1753 (event->keyval == GDK_End) ||
75204ab6a6d7 [gaim-migrate @ 10100]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
1754 (event->keyval == GDK_Tab) ||
75204ab6a6d7 [gaim-migrate @ 10100]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
1755 (event->keyval == GDK_ISO_Left_Tab))
8177
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1756 return FALSE;
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1757
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1758 if (event->type == GDK_KEY_RELEASE)
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1759 gtk_widget_grab_focus(gtkconv->entry);
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1760
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1761 gtk_widget_event(gtkconv->entry, (GdkEvent *)event);
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1762
33b3a01c6318 [gaim-migrate @ 8891]
Mark Doliner <markdoliner@pidgin.im>
parents: 8176
diff changeset
1763 return TRUE;
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1764 }
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1765
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1766 static void
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
1767 menu_conv_sel_send_cb(GObject *m, gpointer data)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1768 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1769 GaimConvWindow *win = g_object_get_data(m, "user_data");
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
1770 GaimAccount *account = g_object_get_data(m, "gaim_account");
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1771 GaimConversation *conv;
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1772 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1773
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1774 conv = gaim_conv_window_get_active_conversation(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1775
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
1776 gaim_conversation_set_account(conv, account);
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1777
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1778 gtkconv = GAIM_GTK_CONVERSATION(conv);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
1779 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
9699
d1ca5dd91cc2 [gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents: 9696
diff changeset
1780 gaim_account_get_protocol_name(conv->account));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1781 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1782
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1783 static void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1785 gchar *new_text, gint new_text_length, gpointer user_data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1787 GaimConversation *conv = (GaimConversation *)user_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1788
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1789 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1790
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1791 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1792 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1793
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1794 got_typing_keypress(conv, (gtk_text_iter_is_start(position) &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795 gtk_text_iter_is_end(position)));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1796 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1797
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 static void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1799 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1800 GtkTextIter *end_pos, gpointer user_data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1801 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1802 GaimConversation *conv = (GaimConversation *)user_data;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1803 GaimConvIm *im;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1804
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1805 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1806
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1807 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1808 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1809
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1810 im = GAIM_CONV_IM(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1811
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1812 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1813
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1814 /* We deleted all the text, so turn off typing. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1815 if (gaim_conv_im_get_type_again_timeout(im))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1816 gaim_conv_im_stop_type_again_timeout(im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1817
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1818 serv_send_typing(gaim_conversation_get_gc(conv),
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1819 gaim_conversation_get_name(conv),
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1820 GAIM_NOT_TYPING);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1821 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1822 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1823 /* We're deleting, but not all of it, so it counts as typing. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1824 got_typing_keypress(conv, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1825 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1826 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1827
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1828 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1829 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1830 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1831 static GdkCursor *cursor = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1832
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1833 gtkwin->in_drag = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1834
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1835 if (gtkwin->drag_leave_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1836 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1837 gtkwin->drag_leave_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1838
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1839 gtkwin->drag_leave_signal = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1840 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1841
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1842 if (cursor == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1843 cursor = gdk_cursor_new(GDK_FLEUR);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1844
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1845 /* Grab the pointer */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1846 gtk_grab_add(gtkwin->notebook);
5114
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1847 #ifndef _WIN32
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1848 /* Currently for win32 GTK+ (as of 2.2.1), gdk_pointer_is_grabbed will
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1849 always be true after a button press. */
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1850 if (!gdk_pointer_is_grabbed())
5114
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1851 #endif
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1852 gdk_pointer_grab(gtkwin->notebook->window, FALSE,
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1853 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1854 NULL, cursor, GDK_CURRENT_TIME);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1855 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1856
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1857 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1858 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1859 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1860 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1861
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1862 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1863
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1864 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1865 * Make sure the user moved the mouse far enough for the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1866 * drag to be initiated.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1867 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1868 if (gtkwin->in_predrag) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1869 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1870 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1871 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1872 e->y_root >= gtkwin->drag_max_y) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1873
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1874 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1875 notebook_init_grab(gtkwin, widget);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1876 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1877 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1878 else { /* Otherwise, draw the arrows. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1879 GaimConvWindow *dest_win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1880 GaimGtkWindow *dest_gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1881 GtkNotebook *dest_notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1882 GtkWidget *tab, *last_vis_tab = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1883 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1884 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1885 gboolean horiz_tabs = FALSE, tab_found = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1886 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1887
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1888 /* Get the window that the cursor is over. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1889 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1890
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1891 if (dest_win == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1892 dnd_hints_hide_all();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1893
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1894 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1895 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1896
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1897 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1898
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1899 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1900
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1901 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1902
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1903 arrow1_x = arrow2_x = nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1904 arrow1_y = arrow2_y = nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1905
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1906 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1907 e->x_root, e->y_root);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1908
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1909 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1910 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1911
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1912 horiz_tabs = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1913 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1914
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1915 /* Find out where to put the arrows. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1916 for (l = gaim_conv_window_get_conversations(dest_win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1917 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1918 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1919
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1920 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1921
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1922 tab = GAIM_GTK_CONVERSATION(conv)->tabby;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1923
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1924 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1925 * If this is the correct tab, record the positions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1926 * for the arrows.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1927 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1928 if (i == page_num) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1929 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1930 arrow1_x = arrow2_x = nb_x + tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1931 arrow1_y = nb_y + tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932 arrow2_y = nb_y + tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1933 tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1934 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1935 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1936 arrow1_x = nb_x + tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1937 arrow2_x = nb_x + tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1938 tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1939 arrow1_y = arrow2_y = nb_y + tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1940 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1941
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1942 tab_found = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1943 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1944 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1945 else { /* Keep track of the right-most tab that we see. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1946 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1947 last_vis_tab = tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1948 last_vis_tab_loc = tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1949 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1950 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1951 last_vis_tab = tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1952 last_vis_tab_loc = tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1953 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1954 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1955 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1956
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1957 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1958 * If we didn't find the tab, then we'll just place the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1959 * arrows to the right/bottom of the last visible tab.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1960 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1961 if (!tab_found && last_vis_tab) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1962 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1963 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1964 last_vis_tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1965 arrow1_y = nb_y + last_vis_tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1966 arrow2_y = nb_y + last_vis_tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1967 last_vis_tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1968 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1969 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1970 arrow1_x = nb_x + last_vis_tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1971 arrow2_x = nb_x + last_vis_tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1972 last_vis_tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1973 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1974 last_vis_tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1975 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1976 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1977
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1978 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1979 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1980 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1981 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1982 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1983 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1984 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1985 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1986 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1987
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1988 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1989 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1990
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1991 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1992 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1993 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1994 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1995
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1996 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1997
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1998 if (gtkwin->in_drag)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1999 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2000
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2001 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2002 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2003 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2004 e->y_root >= gtkwin->drag_max_y) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2005
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2006 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2007 notebook_init_grab(gtkwin, widget);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2008 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2009
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2010 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2011 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2012
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2013 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2014 * THANK YOU GALEON!
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2015 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2016 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2017 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2018 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2019 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2020 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2021 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2022 int tab_clicked;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2023
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2024 if (e->button != 1 || e->type != GDK_BUTTON_PRESS)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2025 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2026
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2027 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2028
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2029 if (gtkwin->in_drag) {
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2030 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2031 "Already in the middle of a window drag at tab_press_cb\n");
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
2032 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2033 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2034
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2035 /*
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2036 * Make sure a tab was actually clicked. The arrow buttons
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2037 * mess things up.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2038 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2039 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2040
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2041 if (tab_clicked == -1)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2042 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2043
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2044 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2045 * Get the relative position of the press event, with regards to
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2046 * the position of the notebook.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2047 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2048 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2049
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2050 x_rel = e->x_root - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2051 y_rel = e->y_root - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2052
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2053 /* Reset the min/max x/y */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2054 gtkwin->drag_min_x = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2055 gtkwin->drag_min_y = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2056 gtkwin->drag_max_x = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2057 gtkwin->drag_max_y = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2058
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2059 /* Find out which tab was dragged. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2060 for (l = gaim_conv_window_get_conversations(win); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2061 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2062 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2063
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2064 if (!GTK_WIDGET_VISIBLE(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2065 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2066
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2067 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2068 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2069
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2070 /* Save the borders of the tab. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2071 gtkwin->drag_min_x = tab->allocation.x + nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2072 gtkwin->drag_min_y = tab->allocation.y + nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2073 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2074 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2075 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2076
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2077 /* Make sure the click occurred in the tab. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2078 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2079 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2080 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2081 e->y_root >= gtkwin->drag_max_y) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2082
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2083 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2084 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2085
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2086 gtkwin->in_predrag = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2087
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2088 /* Connect the new motion signals. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2089 gtkwin->drag_motion_signal =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2090 g_signal_connect(G_OBJECT(widget), "motion_notify_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2091 G_CALLBACK(notebook_motion_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2092
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2093 gtkwin->drag_leave_signal =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2094 g_signal_connect(G_OBJECT(widget), "leave_notify_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2095 G_CALLBACK(notebook_leave_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2096
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2097 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2098 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2099
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2100 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2101 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2102 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2103 GaimConvWindow *dest_win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2104 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2105 GaimGtkWindow *dest_gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2106 GaimConversation *conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2107 GtkNotebook *dest_notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2108 gint dest_page_num;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2109
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2110 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2111 * Don't check to make sure that the event's window matches the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2112 * widget's, because we may be getting an event passed on from the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2113 * close button.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2114 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2115 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2116 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2117
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2118 if (gdk_pointer_is_grabbed()) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2119 gdk_pointer_ungrab(GDK_CURRENT_TIME);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2120 gtk_grab_remove(widget);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2121 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2122
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2123 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2124
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
2125 if (!gtkwin->in_predrag && !gtkwin->in_drag)
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
2126 return FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2127
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2128 /* Disconnect the motion signal. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2129 if (gtkwin->drag_motion_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2130 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2131 gtkwin->drag_motion_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2132
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2133 gtkwin->drag_motion_signal = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2134 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2135
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2136 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2137 * If we're in a pre-drag, we'll also need to disconnect the leave
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2138 * signal.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2139 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2140 if (gtkwin->in_predrag) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2141 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2142
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2143 if (gtkwin->drag_leave_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2144 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2145 gtkwin->drag_leave_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2146
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2147 gtkwin->drag_leave_signal = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2148 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2149 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2150
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2151 /* If we're not in drag... */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2152 /* We're perfectly normal people! */
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
2153 if (!gtkwin->in_drag)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2154 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2155
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2156 gtkwin->in_drag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2157
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2158 dnd_hints_hide_all();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2159
4369
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
2160 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2161
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2162 conv = gaim_conv_window_get_active_conversation(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2163
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2164 if (dest_win == NULL) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2165 if (gaim_conv_window_get_conversation_count(win) < 2)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2166 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2167
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2168 if (gaim_conv_window_get_conversation_count(win) > 1) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2169 /* Make a new window to stick this to. */
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2170 GaimGtkConversation *gtkconv;
4748
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2171 gint win_width, win_height;
5121
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
2172
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
2173 gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2174
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2175 dest_win = gaim_conv_window_new();
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2176
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2177 gaim_conv_window_add_conversation(dest_win,
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2178 gaim_conv_window_remove_conversation(win,
5139
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5133
diff changeset
2179 gaim_conversation_get_index(conv)));
5121
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
2180
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2181 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2182
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2183 gtk_window_get_size(GTK_WINDOW(dest_gtkwin->window),
4748
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2184 &win_width, &win_height);
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2185
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2186 gtk_window_move(GTK_WINDOW(dest_gtkwin->window),
4748
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2187 e->x_root - (win_width / 2),
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2188 e->y_root - (win_height / 2));
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
2189
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2190 gaim_conv_window_show(dest_win);
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2191 }
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2192 } else {
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2193 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2194
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2195 /* Get the destination notebook. */
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2196 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook);
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2197
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2198 /* Get the destination page number. */
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2199 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2200 e->x_root, e->y_root);
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2201
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2202 if (win == dest_win) {
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2203 gaim_conv_window_move_conversation(win,
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2204 gaim_conversation_get_index(conv), dest_page_num);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2205 }
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2206 else {
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2207 size_t pos;
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2208
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2209 gaim_conv_window_remove_conversation(win,
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2210 gaim_conversation_get_index(conv));
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2211
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2212 pos = gaim_conv_window_add_conversation(dest_win, conv);
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2213
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2214 if (pos != dest_page_num)
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2215 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num);
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2216
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2217 gaim_conv_window_switch_conversation(dest_win, dest_page_num);
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2218 }
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2219
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2220 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2221 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2222
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2223 gaim_signal_emit(gaim_gtk_conversations_get_handle(), "conversation-drag-ended",
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
2224 win, dest_win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2225
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2226 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2227 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2228
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2229 /**************************************************************************
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2230 * A bunch of buddy icon functions
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2231 **************************************************************************/
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2232 static GdkPixbuf *
8755
0a58adb66b8a [gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents: 8748
diff changeset
2233 get_tab_icon(GaimConversation *conv, gboolean small_icon)
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2234 {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2235 GaimAccount *account = gaim_conversation_get_account(conv);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2236 const char *name = gaim_conversation_get_name(conv);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2237 GdkPixbuf *status = NULL;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2238
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2239 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2240 GaimBuddy *b = gaim_find_buddy(account, name);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2241 if (b != NULL) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2242 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b,
8755
0a58adb66b8a [gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents: 8748
diff changeset
2243 (small_icon ? GAIM_STATUS_ICON_SMALL : GAIM_STATUS_ICON_LARGE));
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2244 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2245 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2246
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2247 if (!status) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2248 GdkPixbuf *pixbuf;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2249 pixbuf = create_prpl_icon(account);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2250
8755
0a58adb66b8a [gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents: 8748
diff changeset
2251 if (small_icon && pixbuf != NULL)
8748
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2252 {
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2253 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15,
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2254 GDK_INTERP_BILINEAR);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2255 g_object_unref(pixbuf);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2256 }
8748
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2257 else
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2258 status = pixbuf;
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2259 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2260 return status;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2261 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2262
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2263 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2264 update_tab_icon(GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2265 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2266 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2267 GaimConvWindow *win = gaim_conversation_get_window(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2268 GaimAccount *account;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2269 const char *name;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2270 GdkPixbuf *status = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2271
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2272 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2273 name = gaim_conversation_get_name(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2274 account = gaim_conversation_get_account(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2275
8748
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2276 status = get_tab_icon(conv, TRUE);
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2277
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2278 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2279 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2280
8748
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2281 if (status != NULL)
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2282 g_object_unref(status);
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2283
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2284 if (gaim_conv_window_get_active_conversation(win) == conv &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2285 gtkconv->u.im->anim == NULL)
8748
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2286 {
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2287 status = get_tab_icon(conv, FALSE);
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2288
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2289 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2290
8748
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2291 if (status != NULL)
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2292 g_object_unref(status);
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2293 }
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2294 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2295
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2296 static void
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2297 get_icon_scale_size(GdkPixbufAnimation *icon, GaimBuddyIconSpec *spec, int *width, int *height)
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2298 {
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2299 *width = gdk_pixbuf_animation_get_width(icon);
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2300 *height = gdk_pixbuf_animation_get_height(icon);
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2301
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2302 /* this should eventually get smarter about preserving the aspect
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2303 * ratio when scaling, but gimmie a break, I just woke up */
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2304 if(spec && spec->scale_rules & GAIM_ICON_SCALE_DISPLAY) {
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2305 if(*width < spec->min_width)
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2306 *width = spec->min_width;
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2307 else if(*width > spec->max_width)
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2308 *width = spec->max_width;
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2309
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2310 if(*height < spec->min_height)
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2311 *height = spec->min_height;
9319
364efc401b80 [gaim-migrate @ 10127]
Nathan Walp <nwalp@pidgin.im>
parents: 9318
diff changeset
2312 else if(*height > spec->max_height)
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2313 *height = spec->max_height;
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2314 }
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2315
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2316 /* and now for some arbitrary sanity checks */
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2317 if(*width > 100)
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2318 *width = 100;
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2319 if(*height > 100)
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2320 *height = 100;
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2321 }
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2322
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2323 static gboolean
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2324 redraw_icon(gpointer data)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2325 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2326 GaimConversation *conv = (GaimConversation *)data;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2327 GaimGtkConversation *gtkconv;
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2328 GaimAccount *account;
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2329 GaimPluginProtocolInfo *prpl_info = NULL;
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2330
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2331 GdkPixbuf *buf;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2332 GdkPixbuf *scale;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2333 GdkPixmap *pm;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2334 GdkBitmap *bm;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2335 gint delay;
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2336 int scale_width, scale_height;
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2337
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2338 if (!g_list_find(gaim_get_ims(), conv)) {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2339 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2340 "Conversation not found in redraw_icon. I think this "
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2341 "is a bug.\n");
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2342 return FALSE;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2343 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2344
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2345 gtkconv = GAIM_GTK_CONVERSATION(conv);
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2346 account = gaim_conversation_get_account(conv);
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2347 if(account && account->gc)
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2348 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2349
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2350 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2351 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2352
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2353 get_icon_scale_size(gtkconv->u.im->anim, prpl_info ? &prpl_info->icon_spec :
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2354 NULL, &scale_width, &scale_height);
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2355
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2356 /* this code is ugly, and scares me */
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2357 scale = gdk_pixbuf_scale_simple(buf,
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2358 MAX(gdk_pixbuf_get_width(buf) * scale_width /
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2359 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
2360 MAX(gdk_pixbuf_get_height(buf) * scale_height /
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2361 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2362 GDK_INTERP_NEAREST);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2363
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2364 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2365 g_object_unref(G_OBJECT(scale));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2366 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2367 g_object_unref(G_OBJECT(pm));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2368 gtk_widget_queue_draw(gtkconv->u.im->icon);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2369
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2370 if (bm)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2371 g_object_unref(G_OBJECT(bm));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2372
9131
10d401d14a89 [gaim-migrate @ 9912]
Mark Doliner <markdoliner@pidgin.im>
parents: 9130
diff changeset
2373 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter);
10d401d14a89 [gaim-migrate @ 9912]
Mark Doliner <markdoliner@pidgin.im>
parents: 9130
diff changeset
2374 if (delay <= 0)
10d401d14a89 [gaim-migrate @ 9912]
Mark Doliner <markdoliner@pidgin.im>
parents: 9130
diff changeset
2375 delay = 100;
10d401d14a89 [gaim-migrate @ 9912]
Mark Doliner <markdoliner@pidgin.im>
parents: 9130
diff changeset
2376
10d401d14a89 [gaim-migrate @ 9912]
Mark Doliner <markdoliner@pidgin.im>
parents: 9130
diff changeset
2377 gtkconv->u.im->icon_timer = g_timeout_add(delay, redraw_icon, conv);
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2378
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2379 return FALSE;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2380 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2381
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2382 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2383 start_anim(GtkObject *obj, GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2384 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2385 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2386 int delay;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2387
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2388 if (!GAIM_IS_GTK_CONVERSATION(conv))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2389 return;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2390
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2391 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2392
8228
d4f90900c1a0 [gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents: 8224
diff changeset
2393 if (gtkconv->u.im->anim == NULL)
d4f90900c1a0 [gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents: 8224
diff changeset
2394 return;
d4f90900c1a0 [gaim-migrate @ 8951]
Mark Doliner <markdoliner@pidgin.im>
parents: 8224
diff changeset
2395
8202
cae9a21f3f70 [gaim-migrate @ 8925]
MBG <chromakode@gmail.com>
parents: 8192
diff changeset
2396 if (gtkconv->u.im->icon_timer != 0)
cae9a21f3f70 [gaim-migrate @ 8925]
MBG <chromakode@gmail.com>
parents: 8192
diff changeset
2397 return;
cae9a21f3f70 [gaim-migrate @ 8925]
MBG <chromakode@gmail.com>
parents: 8192
diff changeset
2398
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2399 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2400 return;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2401
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2402 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2403
8758
940afe5423a9 [gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents: 8756
diff changeset
2404 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv);
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2405 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2406
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2407 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2408 stop_anim(GtkObject *obj, GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2409 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2410 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2411
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2412 if (!GAIM_IS_GTK_CONVERSATION(conv))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2413 return;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2414
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2415 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2416
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2417 if (gtkconv->u.im->icon_timer != 0)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2418 g_source_remove(gtkconv->u.im->icon_timer);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2419
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2420 gtkconv->u.im->icon_timer = 0;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2421 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2422
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2423 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2424 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2425 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2426 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2427
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2428 if (!GAIM_IS_GTK_CONVERSATION(conv))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2429 return;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2430
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2431 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2432
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2433 gtkconv->u.im->animate =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2434 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w));
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2435
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2436 if (gtkconv->u.im->animate)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2437 start_anim(NULL, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2438 else
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2439 stop_anim(NULL, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2440 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2441 static void
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2442 remove_icon(GaimGtkConversation *gtkconv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2443 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2444 g_return_if_fail(gtkconv != NULL);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2445
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2446 if (gtkconv->u.im->icon != NULL)
8821
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
2447 gtk_widget_destroy(gtkconv->u.im->icon->parent->parent->parent);
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2448
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2449 if (gtkconv->u.im->anim != NULL)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2450 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2451
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2452 if (gtkconv->u.im->icon_timer != 0)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2453 g_source_remove(gtkconv->u.im->icon_timer);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2454
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2455 if (gtkconv->u.im->iter != NULL)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2456 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2457
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2458 gtkconv->u.im->icon_timer = 0;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2459 gtkconv->u.im->icon = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2460 gtkconv->u.im->anim = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2461 gtkconv->u.im->iter = NULL;
9687
489b6b200876 [gaim-migrate @ 10539]
Sean Egan <seanegan@pidgin.im>
parents: 9683
diff changeset
2462 gtkconv->u.im->show_icon = FALSE;
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2463 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2464
9497
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2465 static void
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
2466 saveicon_writefile_cb(void *user_data, const char *filename)
9497
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2467 {
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
2468 GaimConversation *conv = (GaimConversation *)user_data;
9497
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2469 FILE *fp;
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2470 GaimBuddyIcon *icon;
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2471 const void *data;
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2472 size_t len;
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2473
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2474 if ((fp = fopen(filename, "wb")) == NULL) {
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
2475 gaim_notify_error(conv, NULL, _("Unable to open file."), NULL);
9497
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2476 return;
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2477 }
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2478
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2479 icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2480 data = gaim_buddy_icon_get_data(icon, &len);
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2481
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2482 if ((len <= 0) || (data == NULL)) {
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
2483 gaim_notify_error(conv, NULL, _("Unable to save icon file to disk."), NULL);
9497
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2484 return;
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2485 }
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2486
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2487 fwrite(data, 1, len, fp);
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2488 fclose(fp);
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2489 }
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2490
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2491 static void
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2492 icon_menu_save_cb(GtkWidget *widget, GaimConversation *conv)
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2493 {
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2494 gchar *buf;
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2495
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2496 g_return_if_fail(conv != NULL);
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
2497
9706
d5b657fe9cff [gaim-migrate @ 10567]
Mark Doliner <markdoliner@pidgin.im>
parents: 9704
diff changeset
2498 /*
d5b657fe9cff [gaim-migrate @ 10567]
Mark Doliner <markdoliner@pidgin.im>
parents: 9704
diff changeset
2499 * XXX - The file extension needs to be set to something that doesn't suck...
d5b657fe9cff [gaim-migrate @ 10567]
Mark Doliner <markdoliner@pidgin.im>
parents: 9704
diff changeset
2500 * Maybe do what gtkimhtml.c does when saving an image?
d5b657fe9cff [gaim-migrate @ 10567]
Mark Doliner <markdoliner@pidgin.im>
parents: 9704
diff changeset
2501 */
9497
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2502 buf = g_strdup_printf("%s.icon", gaim_normalize(conv->account, conv->name));
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
2503
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
2504 gaim_request_file(conv, _("Save Icon"), buf, TRUE,
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
2505 G_CALLBACK(saveicon_writefile_cb), NULL, conv);
9497
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2506
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2507 g_free(buf);
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2508 }
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2509
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2510 static gboolean
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2511 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2512 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2513 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2514 static GtkWidget *menu = NULL;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2515 GtkWidget *button;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2516
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2517 if (e->button != 3 || e->type != GDK_BUTTON_PRESS)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2518 return FALSE;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2519
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2520 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2521
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2522 /*
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2523 * If a menu already exists, destroy it before creating a new one,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2524 * thus freeing-up the memory it occupied.
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2525 */
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2526 if (menu != NULL)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2527 gtk_widget_destroy(menu);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2528
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2529 menu = gtk_menu_new();
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2530
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2531 if (gtkconv->u.im->anim &&
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2532 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2533 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2534 gaim_new_check_item(menu, _("Animate"),
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2535 G_CALLBACK(toggle_icon_animate_cb), conv,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2536 gtkconv->u.im->icon_timer);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2537 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2538
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2539 button = gtk_menu_item_new_with_label(_("Hide Icon"));
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2540 g_signal_connect_swapped(G_OBJECT(button), "activate",
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2541 G_CALLBACK(remove_icon), gtkconv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2542 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2543 gtk_widget_show(button);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2544
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2545 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
9497
1df8b47b083e [gaim-migrate @ 10323]
Mark Doliner <markdoliner@pidgin.im>
parents: 9495
diff changeset
2546 G_CALLBACK(icon_menu_save_cb), conv,
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2547 0, 0, NULL);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2548
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2549 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2550
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2551 return TRUE;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2552 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2553 /**************************************************************************
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2554 * End of the bunch of buddy icon functions
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2555 **************************************************************************/
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2556
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2557 /*
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2558 * Makes sure all the menu items and all the buttons are hidden/shown and
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8730
diff changeset
2559 * sensitive/insensitive. This is called after changing tabs and when an
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2560 * account signs on or off.
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2561 */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2562 static void
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2563 gray_stuff_out(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2564 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2565 GaimConvWindow *win;
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2566 GaimGtkWindow *gtkwin;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2567 GaimGtkConversation *gtkconv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2568 GaimConnection *gc;
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2569 GaimPluginProtocolInfo *prpl_info = NULL;
7222
0db5e5ca0104 [gaim-migrate @ 7791]
Sean Egan <seanegan@pidgin.im>
parents: 7219
diff changeset
2570 GdkPixbuf *window_icon = NULL;
8439
4960eeede00d [gaim-migrate @ 9169]
Mark Doliner <markdoliner@pidgin.im>
parents: 8427
diff changeset
2571 GtkIMHtmlButtons buttons;
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2572
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2573 win = gaim_conversation_get_window(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2574 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2575 gtkconv = GAIM_GTK_CONVERSATION(conv);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2576 gc = gaim_conversation_get_gc(conv);
8439
4960eeede00d [gaim-migrate @ 9169]
Mark Doliner <markdoliner@pidgin.im>
parents: 8427
diff changeset
2577
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
2578 if (gc != NULL)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
2579 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2580
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2581 if (gtkwin->menu.send_as != NULL)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2582 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2583
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2584 /*
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2585 * Handle hiding and showing stuff based on what type of conv this is.
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2586 * Stuff that Gaim IMs support in general should be shown for IM
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8730
diff changeset
2587 * conversations. Stuff that Gaim chats support in general should be
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2588 * shown for chat conversations. It doesn't matter whether the PRPL
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2589 * supports it or not--that only affects if the button or menu item
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2590 * is sensitive or not.
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2591 */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2592 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2593 /* Show stuff that applies to IMs, hide stuff that applies to chats */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2594
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2595 /* Deal with buttons */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2596 gtk_widget_show(gtkconv->info);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2597 gtk_widget_show(gtkconv->send);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2598 gtk_widget_show(gtkconv->u.im->warn);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2599 gtk_widget_show(gtkconv->u.im->block);
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2600 gtk_widget_show(gtkconv->u.im->send_file);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2601
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2602 /* Deal with menu items */
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2603 gtk_widget_show(gtkwin->menu.view_log);
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2604 gtk_widget_show(gtkwin->menu.send_file);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2605 gtk_widget_show(gtkwin->menu.add_pounce);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2606 gtk_widget_show(gtkwin->menu.get_info);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2607 gtk_widget_show(gtkwin->menu.warn);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2608 gtk_widget_hide(gtkwin->menu.invite);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2609 gtk_widget_show(gtkwin->menu.alias);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2610 gtk_widget_show(gtkwin->menu.block);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2611
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2612 if (gaim_find_buddy(gaim_conversation_get_account(conv),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2613 gaim_conversation_get_name(conv)) == NULL) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2614 gtk_widget_show(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2615 gtk_widget_hide(gtkwin->menu.remove);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2616 gtk_widget_show(gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2617 gtk_widget_hide(gtkconv->remove);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2618 } else {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2619 gtk_widget_show(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2620 gtk_widget_hide(gtkwin->menu.add);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2621 gtk_widget_hide(gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2622 gtk_widget_show(gtkconv->remove);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2623 }
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2624
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2625 gtk_widget_show(gtkwin->menu.insert_link);
9287
e653264eb602 [gaim-migrate @ 10090]
Mark Doliner <markdoliner@pidgin.im>
parents: 9285
diff changeset
2626 gtk_widget_show(gtkwin->menu.insert_image);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2627 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
9470
6ec3a0dbe814 [gaim-migrate @ 10295]
Tim Ringenbach <marv@pidgin.im>
parents: 9468
diff changeset
2628 /* Show stuff that applies to Chats, hide stuff that applies to IMs */
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2629
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2630 /* Deal with buttons */
7952
fbd557e4a88a [gaim-migrate @ 8626]
Mark Doliner <markdoliner@pidgin.im>
parents: 7949
diff changeset
2631 gtk_widget_show(gtkconv->info);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2632 gtk_widget_show(gtkconv->send);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2633 gtk_widget_show(gtkconv->u.chat->invite);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2634
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2635 /* Deal with menu items */
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2636 gtk_widget_hide(gtkwin->menu.view_log);
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2637 gtk_widget_hide(gtkwin->menu.send_file);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2638 gtk_widget_hide(gtkwin->menu.add_pounce);
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2639 gtk_widget_hide(gtkwin->menu.get_info);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2640 gtk_widget_hide(gtkwin->menu.warn);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2641 gtk_widget_show(gtkwin->menu.invite);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2642 gtk_widget_show(gtkwin->menu.alias);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2643 gtk_widget_hide(gtkwin->menu.block);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2644
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
2645 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
2646 gaim_conversation_get_name(conv)) == NULL) {
9470
6ec3a0dbe814 [gaim-migrate @ 10295]
Tim Ringenbach <marv@pidgin.im>
parents: 9468
diff changeset
2647 /* If the chat is NOT in the buddy list */
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2648 gtk_widget_show(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2649 gtk_widget_hide(gtkwin->menu.remove);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2650 gtk_widget_show(gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2651 gtk_widget_hide(gtkconv->remove);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2652 } else {
9470
6ec3a0dbe814 [gaim-migrate @ 10295]
Tim Ringenbach <marv@pidgin.im>
parents: 9468
diff changeset
2653 /* If the chat IS in the buddy list */
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2654 gtk_widget_show(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2655 gtk_widget_hide(gtkwin->menu.add);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2656 gtk_widget_hide(gtkconv->add);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2657 gtk_widget_show(gtkconv->remove);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2658 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2659
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2660 gtk_widget_show(gtkwin->menu.insert_link);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2661 gtk_widget_hide(gtkwin->menu.insert_image);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2662 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2663
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2664 /*
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2665 * Handle graying stuff out based on whether an account is connected
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2666 * and what features that account supports.
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2667 */
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
2668 if ((gc != NULL) &&
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
2669 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) ||
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
2670 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) {
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2671 /* Account is online */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2672
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2673 /* Deal with buttons */
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2674 gtk_widget_set_sensitive(gtkconv->add, TRUE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2675 gtk_widget_set_sensitive(gtkconv->remove, TRUE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2676 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL));
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2677
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2678 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2679 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2680 gtk_widget_set_sensitive(gtkconv->send,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2681 (prpl_info->send_im != NULL));
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2682 gtk_widget_set_sensitive(gtkconv->u.im->warn,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2683 (prpl_info->warn != NULL));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2684 gtk_widget_set_sensitive(gtkconv->u.im->block,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2685 (prpl_info->add_deny != NULL));
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2686 gtk_widget_set_sensitive(gtkconv->u.im->send_file,
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2687 (prpl_info->send_file
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2688 && (!prpl_info->can_receive_file
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2689 || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv)))));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2690 }
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2691 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2692 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2693 gtk_widget_set_sensitive(gtkconv->send,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2694 (prpl_info->chat_send != NULL));
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2695 gtk_widget_set_sensitive(gtkconv->u.chat->invite,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2696 (prpl_info->chat_invite != NULL));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2697 }
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2698
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2699 /* Deal with the toolbar */
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2700
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2701 if (gc->flags & GAIM_CONNECTION_HTML) {
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
2702 buttons = GTK_IMHTML_ALL; /* Everything on */
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2703 if (!(prpl_info->options & OPT_PROTO_IM_IMAGE))
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2704 buttons &= ~GTK_IMHTML_IMAGE;
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2705 if (gc->flags & GAIM_CONNECTION_NO_BGCOLOR)
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2706 buttons &= ~GTK_IMHTML_BACKCOLOR;
8691
87920308f00e [gaim-migrate @ 9444]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8690
diff changeset
2707 if (gc->flags & GAIM_CONNECTION_NO_FONTSIZE) {
87920308f00e [gaim-migrate @ 9444]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8690
diff changeset
2708 buttons &= ~GTK_IMHTML_GROW;
87920308f00e [gaim-migrate @ 9444]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8690
diff changeset
2709 buttons &= ~GTK_IMHTML_SHRINK;
87920308f00e [gaim-migrate @ 9444]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8690
diff changeset
2710 }
9041
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
2711 if (gc->flags & GAIM_CONNECTION_NO_URLDESC)
cbded2eb14d7 [gaim-migrate @ 9817]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9025
diff changeset
2712 buttons &= ~GTK_IMHTML_LINKDESC;
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2713 } else {
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2714 buttons = GTK_IMHTML_SMILEY;
8420
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2715 }
71d59c4e2beb [gaim-migrate @ 9150]
Sean Egan <seanegan@pidgin.im>
parents: 8408
diff changeset
2716 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons);
8427
b99f5085af0a [gaim-migrate @ 9157]
Sean Egan <seanegan@pidgin.im>
parents: 8422
diff changeset
2717 gtk_imhtmltoolbar_associate_smileys (GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(gaim_conversation_get_account(conv)));
8422
fab2b4a60683 [gaim-migrate @ 9152]
Nathan Walp <nwalp@pidgin.im>
parents: 8420
diff changeset
2718
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2719 /* Deal with menu items */
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2720 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2721 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2722 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2723 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2724 gtk_widget_set_sensitive(gtkwin->menu.invite,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2725 (prpl_info->chat_invite != NULL));
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
2726
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2727 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2728 gtk_widget_set_sensitive(gtkwin->menu.send_file,
9470
6ec3a0dbe814 [gaim-migrate @ 10295]
Tim Ringenbach <marv@pidgin.im>
parents: 9468
diff changeset
2729 (gc && prpl_info->send_file != NULL
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2730 && (!prpl_info->can_receive_file
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2731 || prpl_info->can_receive_file(gc, gaim_conversation_get_name(conv)))));
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2732 if (gaim_find_buddy(gaim_conversation_get_account(conv),
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2733 gaim_conversation_get_name(conv)) == NULL)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2734 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2735 else
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2736 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2737 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2738 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2739 gaim_conversation_get_name(conv)) == NULL)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2740 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2741 else
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2742 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2743 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2744
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2745 gtk_widget_set_sensitive(gtkwin->menu.block,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2746 (prpl_info->add_deny != NULL));
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2747 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE);
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
2748 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE);
8758
940afe5423a9 [gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents: 8756
diff changeset
2749 gtk_widget_set_sensitive(gtkwin->menu.insert_link,
940afe5423a9 [gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents: 8756
diff changeset
2750 gc->flags & GAIM_CONNECTION_HTML);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2751 gtk_widget_set_sensitive(gtkwin->menu.insert_image,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2752 (prpl_info->options & OPT_PROTO_IM_IMAGE));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2753 } else {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2754 /* Account is offline */
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
2755 /* Or it's a chat where we left. */
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2756
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2757 /* Deal with buttons */
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2758 gtk_widget_set_sensitive(gtkconv->add, FALSE);
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2759 gtk_widget_set_sensitive(gtkconv->remove, FALSE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2760 gtk_widget_set_sensitive(gtkconv->info, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2761 gtk_widget_set_sensitive(gtkconv->send, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2762 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2763 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2764 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE);
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2765 gtk_widget_set_sensitive(gtkconv->u.im->send_file, FALSE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2766 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2767 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2768 }
8748
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2769
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2770 /* Then deal with menu items */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2771 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE);
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
2772 gtk_widget_set_sensitive(gtkwin->menu.send_file, FALSE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2773 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2774 gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2775 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2776 gtk_widget_set_sensitive(gtkwin->menu.invite, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2777 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2778 gtk_widget_set_sensitive(gtkwin->menu.block, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2779 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2780 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
2781 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2782 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2783 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2784
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2785 /*
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2786 * Update the window's icon
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2787 */
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2788 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2789 (gtkconv->u.im->anim))
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2790 {
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2791 window_icon =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2792 gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2793 g_object_ref(window_icon);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2794 } else {
8748
b371a58d0263 [gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents: 8735
diff changeset
2795 window_icon = get_tab_icon(conv, FALSE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2796 }
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2797 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2798 g_object_unref(G_OBJECT(window_icon));
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2799 }
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2800
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2801 static void
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2802 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2803 gpointer user_data)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2804 {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2805 GaimConvWindow *win;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2806 GaimConversation *conv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2807 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2808
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2809 win = (GaimConvWindow *)user_data;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2810 conv = gaim_conv_window_get_active_conversation(win);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2811
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2812 g_return_if_fail(conv != NULL);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2813
8192
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2814 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM)
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2815 return;
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2816
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2817 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2818
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2819 stop_anim(NULL, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2820 }
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2821
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2822 static void
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2823 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2824 gpointer user_data)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2825 {
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2826 GaimConvWindow *win;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2827 GaimConversation *conv;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2828 GaimGtkConversation *gtkconv;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2829 GaimGtkWindow *gtkwin;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2830
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2831 win = (GaimConvWindow *)user_data;
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2832 conv = gaim_conv_window_get_conversation_at(win, page_num);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2833
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2834 g_return_if_fail(conv != NULL);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2835
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2836 gtkwin = GAIM_GTK_WINDOW(win);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2837 gtkconv = GAIM_GTK_CONVERSATION(conv);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2838
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2839 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2840
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2841 /* Update the menubar */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
2842 gray_stuff_out(conv);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2843
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2844 update_typing_icon(conv);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2845
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2846 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2847 gaim_conversation_is_logging(conv));
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2848
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2849 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2850 gtkconv->make_sound);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2851
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2852 gtk_check_menu_item_set_active(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2853 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2854 gtkconv->show_formatting_toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2855
9188
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
2856 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.show_timestamps),
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
2857 gtkconv->show_timestamps);
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
2858
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2859 /*
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
2860 * We pause icons when they are not visible. If this icon should
9297
75204ab6a6d7 [gaim-migrate @ 10100]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
2861 * be animated then start it back up again.
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2862 */
8192
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2863 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) &&
d029f4ab0531 [gaim-migrate @ 8913]
Mark Doliner <markdoliner@pidgin.im>
parents: 8191
diff changeset
2864 (gtkconv->u.im->animate))
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2865 start_anim(NULL, conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
2866
4965
484e7ce9532a [gaim-migrate @ 5299]
Sean Egan <seanegan@pidgin.im>
parents: 4963
diff changeset
2867 gtk_window_set_title(GTK_WINDOW(gtkwin->window),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2868 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2869 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2870
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2871 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2872 * Utility functions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2873 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2874
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2875 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2876 got_typing_keypress(GaimConversation *conv, gboolean first)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2877 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2878 GaimConvIm *im;
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2879
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2880 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2881 * We know we got something, so we at least have to make sure we don't
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2882 * send GAIM_TYPED any time soon.
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2883 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2884
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2885 im = GAIM_CONV_IM(conv);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2886
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2887 if (gaim_conv_im_get_type_again_timeout(im))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2888 gaim_conv_im_stop_type_again_timeout(im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2889
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2890 gaim_conv_im_start_type_again_timeout(im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2891
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2892 if (first || (gaim_conv_im_get_type_again(im) != 0 &&
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2893 time(NULL) > gaim_conv_im_get_type_again(im))) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2894
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2895 int timeout = serv_send_typing(gaim_conversation_get_gc(conv),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2896 (char *)gaim_conversation_get_name(conv),
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2897 GAIM_TYPING);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2898
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2899 if (timeout)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2900 gaim_conv_im_set_type_again(im, time(NULL) + timeout);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2901 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2902 gaim_conv_im_set_type_again(im, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2903 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2904 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2905
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2906 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2907 update_typing_icon(GaimConversation *conv)
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2908 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2909 GaimGtkWindow *gtkwin;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2910 GaimConvIm *im = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2911 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2912
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2913 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2914
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2915 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2916 im = GAIM_CONV_IM(conv);
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2917
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2918 if(gtkwin->menu.typing_icon) {
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2919 gtk_widget_destroy(gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2920 gtkwin->menu.typing_icon = NULL;
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2921 }
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2922 if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) {
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2923 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2924 gtk_image_menu_item_set_image(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2925 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2926 gtk_image_new_from_stock(GAIM_STOCK_TYPING,
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2927 GTK_ICON_SIZE_MENU));
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2928 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2929 _("User is typing..."), NULL);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2930 } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) {
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2931 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2932 gtk_image_menu_item_set_image(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2933 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2934 gtk_image_new_from_stock(GAIM_STOCK_TYPED,
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2935 GTK_ICON_SIZE_MENU));
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2936 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2937 _("User has typed something and paused"), NULL);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2938 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2939
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2940 if(gtkwin->menu.typing_icon) {
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2941 gtk_menu_item_set_right_justified(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2942 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2943 gtk_widget_show_all(gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2944 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2945 gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2946 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2947 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2948
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2949 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2950 update_send_as_selection(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2951 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2952 GaimAccount *account;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2953 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2954 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2955 GtkWidget *menu;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2956 GList *child;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2957
7090
58fa35e8f2a0 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2958 if (g_list_find(gaim_get_windows(), win) == NULL)
58fa35e8f2a0 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2959 return FALSE;
4849
21123cba7a70 [gaim-migrate @ 5174]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
2960
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2961 conv = gaim_conv_window_get_active_conversation(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2962
5860
27f5a177b7fc [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2963 if (conv == NULL)
27f5a177b7fc [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2964 return FALSE;
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2965
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2966 account = gaim_conversation_get_account(conv);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2967 gtkwin = GAIM_GTK_WINDOW(win);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2968
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2969 if (gtkwin->menu.send_as == NULL)
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2970 return FALSE;
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2971
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2972 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2973
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2974 menu = gtk_menu_item_get_submenu(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2975 GTK_MENU_ITEM(gtkwin->menu.send_as));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2976
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2977 for (child = gtk_container_get_children(GTK_CONTAINER(menu));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2978 child != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2979 child = child->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2980
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2981 GtkWidget *item = child->data;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2982 GaimAccount *item_account = g_object_get_data(G_OBJECT(item),
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2983 "gaim_account");
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2984
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2985 if (account == item_account) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2986 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2987 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2988 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2989 }
6030
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6016
diff changeset
2990
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2991 return FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2992 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2993
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2994 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2995 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2996 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2997 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2998 GtkWidget *menu;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2999 GtkWidget *menuitem;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3000 GList *gcs;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3001 GList *convs;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3002 GSList *group = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3003 gboolean first_offline = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3004 gboolean found_online = FALSE;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3005 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3006
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3007 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3008
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3009 if (gtkwin->menu.send_as != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3010 gtk_widget_destroy(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3011
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3012 /* See if we have > 1 connection active. */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3013 if (g_list_length(gaim_connections_get_all()) < 2) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3014 /* Now make sure we don't have any Offline entries. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3015 gboolean found_offline = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3016
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3017 for (convs = gaim_get_conversations();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3018 convs != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3019 convs = convs->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3020
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3021 GaimConversation *conv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3022 GaimAccount *account;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3023
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3024 conv = (GaimConversation *)convs->data;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3025 account = gaim_conversation_get_account(conv);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3026
6495
02f5ce189666 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
3027 if (account != NULL && account->gc == NULL) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3028 found_offline = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3029 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3030 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3031 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3032
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3033 if (!found_offline) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3034 gtkwin->menu.send_as = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3035 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3036 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3037 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3038
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3039 /* Build the Send As menu */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3040 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3041 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3042
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3043 menu = gtk_menu_new();
7857
fd19e9413014 [gaim-migrate @ 8511]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7855
diff changeset
3044 gtk_menu_shell_insert(GTK_MENU_SHELL(gtkwin->menu.menubar),
fd19e9413014 [gaim-migrate @ 8511]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7855
diff changeset
3045 gtkwin->menu.send_as, 2);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3046 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3047
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3048 gtk_widget_show(menu);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3049
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3050 /* Fill it with entries. */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3051 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) {
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3052
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3053 GaimConnection *gc;
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3054 GaimAccount *account;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3055 GtkWidget *box;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3056 GtkWidget *label;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3057 GtkWidget *image;
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3058 GdkPixbuf *pixbuf, *scale;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3059
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3060 found_online = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3061
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3062 gc = (GaimConnection *)gcs->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3063
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3064 /* Create a pixmap for the protocol icon. */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3065 pixbuf = create_prpl_icon(gc->account);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3066 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3067
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3068 /* Now convert it to GtkImage */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3069 if (pixbuf == NULL)
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3070 image = gtk_image_new();
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3071 else
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3072 image = gtk_image_new_from_pixbuf(scale);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3073
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3074 gtk_size_group_add_widget(sg, image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3075
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3076 g_object_unref(G_OBJECT(scale));
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3077 g_object_unref(G_OBJECT(pixbuf));
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3078
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3079 account = gaim_connection_get_account(gc);
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3080
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3081 /* Make our menu item */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3082 menuitem = gtk_radio_menu_item_new_with_label(group,
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3083 gaim_account_get_username(account));
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
3084 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3085
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3086 /* Do some evil, see some evil, speak some evil. */
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3087 box = gtk_hbox_new(FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3088
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3089 label = gtk_bin_get_child(GTK_BIN(menuitem));
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3090 g_object_ref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3091 gtk_container_remove(GTK_CONTAINER(menuitem), label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3092
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3093 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3094 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3095
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3096 g_object_unref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3097
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3098 gtk_container_add(GTK_CONTAINER(menuitem), box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3099
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3100 gtk_widget_show(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3101 gtk_widget_show(image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3102 gtk_widget_show(box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3103
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3104 /* Set our data and callbacks. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3105 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
3106 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3107
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
3108 g_signal_connect(G_OBJECT(menuitem), "activate",
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
3109 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3110
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3111 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3112 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3113 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3114
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3115 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3116 * Fill it with any accounts that still has an open (yet disabled) window
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3117 * (signed off accounts with a window open).
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3118 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3119 for (convs = gaim_get_conversations();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3120 convs != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3121 convs = convs->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3122
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3123 GaimConversation *conv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3124 GaimAccount *account;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3125 GtkWidget *box;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3126 GtkWidget *label;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3127 GtkWidget *image;
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3128 GdkPixbuf *pixbuf, *scale;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3129
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3130 conv = (GaimConversation *)convs->data;
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3131
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3132 if (conv == deleted_conv)
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3133 continue;
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3134
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3135 account = gaim_conversation_get_account(conv);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3136
6495
02f5ce189666 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
3137 if (account != NULL && account->gc == NULL) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3138 if (first_offline && found_online) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3139 menuitem = gtk_separator_menu_item_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3140 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3141 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3142
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3143 first_offline = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3144 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3145
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3146 /* Create a pixmap for the protocol icon. */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3147 pixbuf = create_prpl_icon(account);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3148 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3149 GDK_INTERP_BILINEAR);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3150
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3151 /* Now convert it to GtkImage */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3152 if (pixbuf == NULL)
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3153 image = gtk_image_new();
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3154 else
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3155 image = gtk_image_new_from_pixbuf(scale);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3156
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3157 gtk_size_group_add_widget(sg, image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3158
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3159 if (scale != NULL) g_object_unref(scale);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3160 if (pixbuf != NULL) g_object_unref(pixbuf);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3161
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3162 /* Make our menu item */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3163 menuitem = gtk_radio_menu_item_new_with_label(group,
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
3164 account->username);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
3165 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3166
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3167 /* Do some evil, see some evil, speak some evil. */
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3168 box = gtk_hbox_new(FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3169
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3170 label = gtk_bin_get_child(GTK_BIN(menuitem));
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3171 g_object_ref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3172 gtk_container_remove(GTK_CONTAINER(menuitem), label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3173
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3174 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3175 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3176
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3177 g_object_unref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3178
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3179 gtk_container_add(GTK_CONTAINER(menuitem), box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3180
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3181 gtk_widget_show(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3182 gtk_widget_show(image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3183 gtk_widget_show(box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3184
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3185 gtk_widget_set_sensitive(menuitem, FALSE);
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
3186 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4674
c06c9e981592 [gaim-migrate @ 4985]
Nathan Walp <nwalp@pidgin.im>
parents: 4673
diff changeset
3187 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3188
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
3189 g_signal_connect(G_OBJECT(menuitem), "activate",
5902
6f9b6b4037b0 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
3190 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
3191
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3192 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3193 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3194 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3195 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3196
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3197 g_object_unref(sg);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
3198
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3199 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3200 update_send_as_selection(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3201 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3202
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3203 static GList *
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3204 generate_invite_user_names(GaimConnection *gc)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3205 {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3206 GaimBlistNode *gnode,*cnode,*bnode;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3207 static GList *tmp = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3208
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3209 if (tmp)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3210 g_list_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3211
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3212 tmp = g_list_append(NULL, "");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3213
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3214 if (gc != NULL) {
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
3215 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
3216 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
3217 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3218 for(cnode = gnode->child; cnode; cnode = cnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3219 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
3220 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3221 for(bnode = cnode->child; bnode; bnode = bnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3222 GaimBuddy *buddy;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3223
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3224 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3225 continue;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3226
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3227 buddy = (GaimBuddy *)bnode;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3228
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3229 if (buddy->account == gc->account &&
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3230 GAIM_BUDDY_IS_ONLINE(buddy))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3231 tmp = g_list_append(tmp, buddy->name);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3232 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3233 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3234 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3235 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3236
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3237 return tmp;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3238 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3239
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3240 static GdkPixbuf *
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3241 get_chat_buddy_status_icon(GaimConvChat *chat, const char *name, GaimConvChatBuddyFlags flags)
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3242 {
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3243 GdkPixbuf *pixbuf, *scale, *scale2;
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3244 char *filename;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3245 char *image = NULL;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3246
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3247 if (flags & GAIM_CBFLAGS_FOUNDER) {
9588
1fdac3af9d88 [gaim-migrate @ 10431]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9584
diff changeset
3248 image = g_strdup("founder.png");
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3249 } else if (flags & GAIM_CBFLAGS_OP) {
9588
1fdac3af9d88 [gaim-migrate @ 10431]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9584
diff changeset
3250 image = g_strdup("op.png");
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3251 } else if (flags & GAIM_CBFLAGS_HALFOP) {
9588
1fdac3af9d88 [gaim-migrate @ 10431]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9584
diff changeset
3252 image = g_strdup("halfop.png");
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3253 } else if (flags & GAIM_CBFLAGS_VOICE) {
9588
1fdac3af9d88 [gaim-migrate @ 10431]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9584
diff changeset
3254 image = g_strdup("voice.png");
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3255 } else if ((!flags) && gaim_conv_chat_is_user_ignored(chat, name)) {
9588
1fdac3af9d88 [gaim-migrate @ 10431]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9584
diff changeset
3256 image = g_strdup("ignored.png");
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3257 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3258 if (image) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3259 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", image, NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3260 g_free(image);
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3261 pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3262 g_free(filename);
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3263 if (!pixbuf)
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3264 return NULL;
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3265 scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR);
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3266 g_object_unref(pixbuf);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3267 if (flags && gaim_conv_chat_is_user_ignored(chat, name)) {
9588
1fdac3af9d88 [gaim-migrate @ 10431]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9584
diff changeset
3268 filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", "default", "ignored.png", NULL);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3269 pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3270 g_free(filename);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3271 scale2 = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3272 g_object_unref(pixbuf);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3273 gdk_pixbuf_composite(scale2, scale, 0, 0, 15, 15, 0, 0, 1, 1, GDK_INTERP_BILINEAR, 192);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3274 g_object_unref(scale2);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3275 }
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3276 return scale;
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3277 }
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3278
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3279 return NULL;
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3280 }
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3281
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3282 static void
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3283 add_chat_buddy_common(GaimConversation *conv, const char *name)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3284 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3285 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3286 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3287 GaimConvChat *chat;
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3288 GaimConvChatBuddyFlags flags;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3289 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3290 GtkListStore *ls;
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3291 GdkPixbuf *pixbuf;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3292
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3293 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3294 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3295 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3296
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3297 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3298
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3299 flags = gaim_conv_chat_user_get_flags(chat, name);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3300 pixbuf = get_chat_buddy_status_icon(chat, name, flags);
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3301
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3302 gtk_list_store_append(ls, &iter);
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3303 gtk_list_store_set(ls, &iter, CHAT_USERS_ICON_COLUMN, pixbuf,
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3304 CHAT_USERS_NAME_COLUMN, name, CHAT_USERS_FLAGS_COLUMN, flags, -1);
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3305 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), CHAT_USERS_NAME_COLUMN,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3306 GTK_SORT_ASCENDING);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3307 if (pixbuf)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3308 g_object_unref(pixbuf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3309 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3310
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3311 static gboolean
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3312 tab_complete(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3313 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3314 GaimGtkConversation *gtkconv;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3315 GaimConvChat *chat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3316 GtkTextIter cursor, word_start, start_buffer;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3317 int start;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3318 int most_matched = -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3319 char *entered, *partial = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3320 char *text;
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3321 char *nick_partial;
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3322 const char *prefix;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3323 GList *matches = NULL;
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3324 GList *list = NULL;
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3325 GList *l = NULL;
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3326 gboolean command = FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3327
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3328 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3329
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3330 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3331 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3332 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3333
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3334 word_start = cursor;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3335
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3336 /* if there's nothing there just return */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3337 if (!gtk_text_iter_compare(&cursor, &start_buffer))
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3338 return (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) ? TRUE : FALSE;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
3339
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3340 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3341 &cursor, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3342
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3343 /* if we're at the end of ": " we need to move back 2 spaces */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3344 start = strlen(text) - 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3345
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3346 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3347 gtk_text_iter_backward_chars(&word_start, 2);
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3348 start-=2;
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3349 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3350
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3351 /* find the start of the word that we're tabbing */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3352 while (start >= 0 && text[start] != ' ') {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3353 gtk_text_iter_backward_char(&word_start);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3354 start--;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3355 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3356
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3357 prefix = gaim_gtk_get_cmd_prefix();
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3358 if (start == -1 && (strlen(text) >= strlen(prefix)) && !strncmp(text, prefix, strlen(prefix))) {
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3359 command = TRUE;
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3360 gtk_text_iter_forward_chars(&word_start, strlen(prefix));
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3361 }
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3362
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3363 g_free(text);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3364
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3365 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3366 &cursor, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3367
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3368 if (!g_utf8_strlen(entered, -1)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3369 g_free(entered);
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3370 return (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) ? TRUE : FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3371 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3372
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3373 nick_partial = g_malloc(strlen(entered)+1);
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3374
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3375 if (command) {
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3376 list = gaim_cmd_list(conv);
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3377 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3378 chat = GAIM_CONV_CHAT(conv);
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3379 list = gaim_conv_chat_get_users(chat);
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3380 } else {
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3381 g_free(nick_partial);
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3382 g_free(entered);
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3383 return FALSE;
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3384 }
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3385
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3386 for (l = list; l; l = l->next) {
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3387 char *name;
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3388
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3389 if (command)
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3390 name = l->data;
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3391 else {
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3392 GaimConvChatBuddy *cb = l->data;
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3393 name = cb->name;
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3394 }
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3395
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3396 strncpy(nick_partial, name, strlen(entered));
8172
20fb788ee986 [gaim-migrate @ 8885]
Daniel Atallah <datallah@pidgin.im>
parents: 8170
diff changeset
3397 nick_partial[strlen(entered)] = '\0';
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3398 if(gaim_utf8_strcasecmp(nick_partial, entered))
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3399 continue;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3400
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3401 /* if we're here, it's a possible completion */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3402
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3403 if (most_matched == -1) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3404 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3405 * this will only get called once, since from now
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3406 * on most_matched is >= 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3407 */
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3408 most_matched = strlen(name);
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3409 partial = g_strdup(name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3410 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3411 else if (most_matched) {
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3412 char *tmp = g_strdup(name);
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3413
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3414 while (gaim_utf8_strcasecmp(tmp, partial)) {
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3415 partial[most_matched] = '\0';
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3416 if(most_matched < strlen(tmp))
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3417 tmp[most_matched] = '\0';
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3418 most_matched--;
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3419 }
8079
07c6d23fbf8b [gaim-migrate @ 8778]
Mark Doliner <markdoliner@pidgin.im>
parents: 8076
diff changeset
3420 most_matched++;
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3421
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3422 g_free(tmp);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3423 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3424
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3425 matches = g_list_append(matches, name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3426 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3427
8021
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3428 g_free(nick_partial);
3a0725152c5f [gaim-migrate @ 8701]
Nathan Walp <nwalp@pidgin.im>
parents: 8001
diff changeset
3429
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3430 /* we're only here if we're doing new style */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3431
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3432 /* if there weren't any matches, return */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3433 if (!matches) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3434 /* if matches isn't set partials won't be either */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3435 g_free(entered);
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3436 if (command)
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3437 g_list_free(list);
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3438 return (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) ? TRUE : FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3439 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3440
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3441 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3442
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3443 if (!matches->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3444 /* there was only one match. fill it in. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3445 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3446 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3447 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3448
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3449 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3450 char *tmp = g_strdup_printf("%s: ", (char *)matches->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3451 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3452 g_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3453 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3454 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3455 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3456 matches->data, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3457
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3458 matches = g_list_remove(matches, matches->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3459 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3460 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3461 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3462 * there were lots of matches, fill in as much as possible
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3463 * and display all of them
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3464 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3465 char *addthis = g_malloc0(1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3466
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3467 while (matches) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3468 char *tmp = addthis;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3469 addthis = g_strconcat(tmp, matches->data, " ", NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3470 g_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3471 matches = g_list_remove(matches, matches->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3472 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3473
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
3474 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3475 time(NULL));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3476 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3477 g_free(addthis);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3478 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3479
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3480 if (command)
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3481 g_list_free(list);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3482 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3483 g_free(partial);
9605
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3484
477310308b79 [gaim-migrate @ 10448]
Tim Ringenbach <marv@pidgin.im>
parents: 9602
diff changeset
3485 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3486 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3487
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3488 static GtkItemFactoryEntry menu_items[] =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3489 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3490 /* Conversation menu */
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3491 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3492
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
3493 { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb,
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3494 0, "<StockItem>", GAIM_STOCK_IM },
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3495
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3496 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" },
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3497
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3498 { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
3499 "<StockItem>", GTK_STOCK_FIND },
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3500 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL },
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3501 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3502 "<StockItem>", GTK_STOCK_SAVE_AS },
8974
066246fc32a4 [gaim-migrate @ 9748]
Etan Reisner <deryni@pidgin.im>
parents: 8962
diff changeset
3503 { N_("/Conversation/Clear"), "<CTL>L", menu_clear_cb, 0, "<StockItem>", GTK_STOCK_CLEAR },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3504
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3505 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3506
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
3507 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", GAIM_STOCK_FILE_TRANSFER },
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3508 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3509 0, NULL },
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3510 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0,
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3511 "<StockItem>", GAIM_STOCK_INFO },
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3512 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0,
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3513 "<StockItem>", GAIM_STOCK_WARN },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3514 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3515 "<StockItem>", GAIM_STOCK_INVITE },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3516
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
3517 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3518
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3519 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0,
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3520 "<StockItem>", GAIM_STOCK_EDIT },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3521 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3522 "<StockItem>", GAIM_STOCK_BLOCK },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3523 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3524 "<StockItem>", GTK_STOCK_ADD },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3525 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3526 "<StockItem>", GTK_STOCK_REMOVE },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3527
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3528 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3529
8756
1a2305f70c1b [gaim-migrate @ 9511]
Mark Doliner <markdoliner@pidgin.im>
parents: 8755
diff changeset
3530 { N_("/Conversation/Insert Lin_k..."), NULL, menu_insert_link_cb, 0,
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3531 "<StockItem>", GAIM_STOCK_LINK },
9287
e653264eb602 [gaim-migrate @ 10090]
Mark Doliner <markdoliner@pidgin.im>
parents: 9285
diff changeset
3532 { N_("/Conversation/Insert Imag_e..."), NULL, menu_insert_image_cb, 0,
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3533 "<StockItem>", GAIM_STOCK_IMAGE },
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3534
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3535 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3536
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3537 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3538 "<StockItem>", GTK_STOCK_CLOSE },
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3539
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3540 /* Options */
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3541 { N_("/_Options"), NULL, NULL, 0, "<Branch>" },
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3542 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" },
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
3543 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" },
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3544 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" },
9188
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
3545 { N_("/Options/Show T_imestamps"), "F2", menu_timestamps_cb, 0, "<CheckItem>" },
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3546 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3547
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
3548 static const int menu_item_count =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3549 sizeof(menu_items) / sizeof(*menu_items);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3550
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3551 static char *
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3552 item_factory_translate_func (const char *path, gpointer func_data)
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3553 {
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
3554 return _((char *)path);
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3555 }
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
3556
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3557 static GtkWidget *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3558 setup_menubar(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3559 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3560 GaimGtkWindow *gtkwin;
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5114
diff changeset
3561 GtkAccelGroup *accel_group;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3562 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3563
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3564 accel_group = gtk_accel_group_new ();
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3565 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
3566 g_object_unref (accel_group);
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5114
diff changeset
3567
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3568 gtkwin->menu.item_factory =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3569 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3570
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3571 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3572 item_factory_translate_func,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3573 NULL, NULL);
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3574
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3575 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3576 menu_items, win);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7415
diff changeset
3577 g_signal_connect(G_OBJECT(accel_group), "accel-changed",
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7415
diff changeset
3578 G_CALLBACK(gaim_gtk_save_accels_cb), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3579
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3580
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3581 gtkwin->menu.menubar =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3582 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3583
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3584
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3585 gtkwin->menu.view_log =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3586 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
3587 N_("/Conversation/View Log"));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3588 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3589
9468
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
3590 gtkwin->menu.send_file =
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
3591 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
f2108802d596 [gaim-migrate @ 10293]
Daniel Atallah <datallah@pidgin.im>
parents: 9459
diff changeset
3592 N_("/Conversation/Send File..."));
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
3593
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3594 gtkwin->menu.add_pounce =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3595 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3596 N_("/Conversation/Add Buddy Pounce..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3597
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3598 /* --- */
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3599
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3600 gtkwin->menu.get_info =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3601 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7857
diff changeset
3602 N_("/Conversation/Get Info"));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3603
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3604 gtkwin->menu.warn =
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3605 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3606 N_("/Conversation/Warn..."));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3607
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3608 gtkwin->menu.invite =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3609 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3610 N_("/Conversation/Invite..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3611
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3612 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3613
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3614 gtkwin->menu.alias =
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3615 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3616 N_("/Conversation/Alias..."));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3617
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3618 gtkwin->menu.block =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3619 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3620 N_("/Conversation/Block..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3621
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3622 gtkwin->menu.add =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3623 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3624 N_("/Conversation/Add..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3625
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3626 gtkwin->menu.remove =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3627 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3628 N_("/Conversation/Remove..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3629
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3630 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3631
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3632 gtkwin->menu.insert_link =
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3633 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3634 N_("/Conversation/Insert Link..."));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3635
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3636 gtkwin->menu.insert_image =
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3637 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3638 N_("/Conversation/Insert Image..."));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3639
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3640 /* --- */
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
3641
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3642 gtkwin->menu.logging =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3643 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3644 N_("/Options/Enable Logging"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3645 gtkwin->menu.sounds =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3646 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3647 N_("/Options/Enable Sounds"));
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3648 gtkwin->menu.show_formatting_toolbar =
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3649 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3650 N_("/Options/Show Formatting Toolbar"));
9188
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
3651 gtkwin->menu.show_timestamps =
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
3652 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
3653 N_("/Options/Show Timestamps"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3654
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3655 generate_send_as_items(win, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3656
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3657 gtk_widget_show(gtkwin->menu.menubar);
4931
4c41a8550423 [gaim-migrate @ 5265]
Sean Egan <seanegan@pidgin.im>
parents: 4896
diff changeset
3658
4c41a8550423 [gaim-migrate @ 5265]
Sean Egan <seanegan@pidgin.im>
parents: 4896
diff changeset
3659 return gtkwin->menu.menubar;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3660 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3661
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3662 GtkWidget *
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3663 gaim_gtkconv_button_new(const char *icon, const char *text, const char *tooltip, GtkTooltips *tooltips, void *callback, void *data)
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3664 {
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3665 GtkWidget *button;
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3666 int buttons;
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3667
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3668 buttons = gaim_prefs_get_int("/gaim/gtk/conversations/button_type");
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3669 button = gaim_pixbuf_button_from_stock(
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3670 (buttons == GAIM_BUTTON_IMAGE ? NULL : text),
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3671 (buttons == GAIM_BUTTON_TEXT ? NULL : icon),
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3672 GAIM_BUTTON_VERTICAL);
9766
2371af5578b6 [gaim-migrate @ 10634]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9759
diff changeset
3673 if (tooltip != NULL)
2371af5578b6 [gaim-migrate @ 10634]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9759
diff changeset
3674 gtk_tooltips_set_tip(tooltips, button, tooltip, NULL);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3675 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
9766
2371af5578b6 [gaim-migrate @ 10634]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9759
diff changeset
3676 if (callback != NULL)
2371af5578b6 [gaim-migrate @ 10634]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9759
diff changeset
3677 g_signal_connect(G_OBJECT(button), "clicked",
2371af5578b6 [gaim-migrate @ 10634]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9759
diff changeset
3678 G_CALLBACK(callback), data);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3679
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3680 return button;
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3681 }
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3682
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3683 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3684 setup_im_buttons(GaimConversation *conv, GtkWidget *parent)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3685 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3686 GaimConnection *gc;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3687 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3688 GaimGtkImPane *gtkim;
8811
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3689 GaimButtonStyle button_type;
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3690 GList *children;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3691
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3692 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3693 gtkim = gtkconv->u.im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3694 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3695
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3696 /* Remove anything else in our parent */
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3697 children = gtk_container_get_children(GTK_CONTAINER(parent));
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3698 while (children != NULL) {
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3699 gtk_container_remove(GTK_CONTAINER(parent), children->data);
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3700 children = g_list_remove(children, children->data);
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3701 }
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3702
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3703 /* The buttons, from left to right */
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3704
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3705 /* Warn button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3706 gtkim->warn = gaim_gtkconv_button_new(GAIM_STOCK_WARN, _("Warn"),
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3707 _("Warn the user"),
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3708 gtkconv->tooltips, warn_cb, conv);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3709 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, TRUE, TRUE, 0);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3710 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn);
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3711
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3712 /* Block button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3713 gtkim->block = gaim_gtkconv_button_new(GAIM_STOCK_BLOCK, _("Block"),
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3714 _("Block the user"),
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3715 gtkconv->tooltips, block_cb, conv);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3716 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, TRUE, TRUE, 0);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3717 gtk_size_group_add_widget(gtkconv->sg, gtkim->block);
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3718
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3719 /* Send File button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3720 gtkim->send_file = gaim_gtkconv_button_new(GAIM_STOCK_FILE_TRANSFER, _("Send File"),
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3721 _("Send a file to the user"),
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3722 gtkconv->tooltips, send_file_cb, conv);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3723 gtk_box_pack_start(GTK_BOX(parent), gtkim->send_file, TRUE, TRUE, 0);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3724 gtk_size_group_add_widget(gtkconv->sg, gtkim->send_file);
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3725
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3726 /* Add button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3727 gtkconv->add = gaim_gtkconv_button_new(GTK_STOCK_ADD, _("Add"),
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3728 _("Add the user to your buddy list"),
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3729 gtkconv->tooltips, add_remove_cb, conv);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3730 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, TRUE, TRUE, 0);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3731 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add);
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3732
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3733 /* Remove button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3734 gtkconv->remove = gaim_gtkconv_button_new(GTK_STOCK_REMOVE, _("Remove"),
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3735 _("Remove the user from your buddy list"),
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3736 gtkconv->tooltips, add_remove_cb, conv);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3737 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, TRUE, TRUE, 0);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3738 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove);
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3739
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3740 /* Info button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3741 gtkconv->info = gaim_gtkconv_button_new(GAIM_STOCK_INFO, _("Info"),
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3742 _("Get the user's information"),
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3743 gtkconv->tooltips, info_cb, conv);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3744 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, TRUE, TRUE, 0);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3745 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3746
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3747 /* Send button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3748 gtkconv->send = gaim_gtkconv_button_new(GAIM_STOCK_SEND, _("Send"),
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3749 _("Send message"),
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3750 gtkconv->tooltips, send_cb, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3751 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3752
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3753 /* Separator */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3754 gtkim->sep2 = gtk_vseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3755 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3756 gtk_widget_show(gtkim->sep2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3757
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3758 gaim_gtkconv_update_buttons_by_protocol(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3759
8811
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3760 /* Check if the buttons should be visible or not */
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
3761 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/button_type");
8811
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3762 if (button_type == GAIM_BUTTON_NONE)
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3763 gtk_widget_hide(parent);
8811
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3764 else
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
3765 gtk_widget_show(parent);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3766 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3767
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3768 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3769 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3770 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3771 GaimConnection *gc;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3772 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3773 GaimGtkChatPane *gtkchat;
8811
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3774 GaimButtonStyle button_type;
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3775 GList *children;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3776
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3777 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3778 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3779 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3780
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3781 /* Remove anything else in our parent */
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3782 children = gtk_container_get_children(GTK_CONTAINER(parent));
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3783 while (children != NULL) {
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3784 gtk_container_remove(GTK_CONTAINER(parent), children->data);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3785 children = g_list_remove(children, children->data);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3786 }
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3787
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3788 /* The buttons, from left to right */
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3789
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3790 /* Invite */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3791 gtkchat->invite = gaim_gtkconv_button_new(GAIM_STOCK_INVITE, _("Invite"),
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3792 _("Invite a usuer"),
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3793 gtkconv->tooltips, invite_cb, conv);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3794 gtk_box_pack_start(GTK_BOX(parent), gtkchat->invite, TRUE, TRUE, 0);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3795 gtk_size_group_add_widget(gtkconv->sg, gtkchat->invite);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3796
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3797 /* Add button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3798 gtkconv->add = gaim_gtkconv_button_new(GTK_STOCK_ADD, _("Add"),
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3799 _("Add the chat to your buddy list"),
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3800 gtkconv->tooltips, add_remove_cb, conv);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3801 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, TRUE, TRUE, 0);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3802 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3803
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3804 /* Remove button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3805 gtkconv->remove = gaim_gtkconv_button_new(GTK_STOCK_REMOVE, _("Remove"),
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3806 _("Remove the chat from your buddy list"),
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3807 gtkconv->tooltips, add_remove_cb, conv);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3808 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, TRUE, TRUE, 0);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3809 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove);
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3810
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3811 /* Send button */
9759
10b4612b885a [gaim-migrate @ 10626]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9754
diff changeset
3812 gtkconv->send = gaim_gtkconv_button_new(GAIM_STOCK_SEND, _("Send"),
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3813 _("Send message"),
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3814 gtkconv->tooltips, send_cb, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3815 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
3816 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3817
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3818 /* Separator */
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3819 gtkchat->sep = gtk_vseparator_new();
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3820 gtk_box_pack_end(GTK_BOX(parent), gtkchat->sep, FALSE, TRUE, 0);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3821 gtk_widget_show(gtkchat->sep);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3822
7996
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3823 gaim_gtkconv_update_buttons_by_protocol(conv);
c3a4e8b9dfd9 [gaim-migrate @ 8673]
Robert McQueen <robot101@debian.org>
parents: 7995
diff changeset
3824
8811
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3825 /* Check if the buttons should be visible or not */
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
3826 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/button_type");
8811
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3827 if (button_type == GAIM_BUTTON_NONE)
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3828 gtk_widget_hide(gtkconv->bbox);
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3829 else
4488926eb4e2 [gaim-migrate @ 9573]
Phil Snowberger
parents: 8802
diff changeset
3830 gtk_widget_show(gtkconv->bbox);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3831 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3832
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3833
7971
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3834 static void topic_callback(GtkWidget *w, GaimConversation *conv)
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3835 {
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3836 GaimPluginProtocolInfo *prpl_info = NULL;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3837 GaimConnection *gc;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3838 GaimGtkConversation *gtkconv;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3839 GaimGtkChatPane *gtkchat;
8858
99c635a80a26 [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3840 const char *new_topic;
99c635a80a26 [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3841 const char *current_topic;
7971
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3842
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3843 gc = gaim_conversation_get_gc(conv);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3844
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3845 if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)))
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3846 return;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3847
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3848 if(prpl_info->set_chat_topic == NULL)
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3849 return;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3850
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3851 gtkconv = GAIM_GTK_CONVERSATION(conv);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3852 gtkchat = gtkconv->u.chat;
8858
99c635a80a26 [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3853 new_topic = gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text));
99c635a80a26 [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3854 current_topic = gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv));
99c635a80a26 [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3855
99c635a80a26 [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3856 if(current_topic && !g_utf8_collate(new_topic, current_topic))
7971
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3857 return;
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3858
8858
99c635a80a26 [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3859 prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)),
99c635a80a26 [gaim-migrate @ 9626]
Nathan Walp <nwalp@pidgin.im>
parents: 8829
diff changeset
3860 new_topic);
7971
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3861 }
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3862
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3863 static gint
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3864 sort_chat_users(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer userdata)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3865 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3866 GaimConvChatBuddyFlags f1 = 0, f2 = 0;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3867 char *user1 = NULL, *user2 = NULL;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3868 gint ret = 0;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3869
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3870 gtk_tree_model_get(model, a, CHAT_USERS_NAME_COLUMN, &user1, CHAT_USERS_FLAGS_COLUMN, &f1, -1);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3871 gtk_tree_model_get(model, b, CHAT_USERS_NAME_COLUMN, &user2, CHAT_USERS_FLAGS_COLUMN, &f2, -1);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3872
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3873 if (user1 == NULL || user2 == NULL) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3874 if (!(user1 == NULL && user2 == NULL))
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3875 ret = (user1 == NULL) ? -1: 1;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3876 } else if (f1 != f2) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3877 /* sort more important users first */
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3878 ret = (f1 > f2) ? -1 : 1;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3879 } else {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3880 ret = g_utf8_collate(user1, user2);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3881 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3882
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3883 g_free(user1);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3884 g_free(user2);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3885
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3886 return ret;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3887 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
3888
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3889 static GtkWidget *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3890 setup_chat_pane(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3891 {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3892 GaimPluginProtocolInfo *prpl_info = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3893 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3894 GaimGtkChatPane *gtkchat;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3895 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3896 GtkWidget *vpaned, *hpaned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3897 GtkWidget *vbox, *hbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3898 GtkWidget *lbox, *bbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3899 GtkWidget *label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3900 GtkWidget *list;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3901 GtkWidget *button;
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3902 GtkWidget *sw;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3903 GtkListStore *ls;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3904 GtkCellRenderer *rend;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3905 GtkTreeViewColumn *col;
9080
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
3906 GList *focus_chain = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3907
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3908 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3909 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3910 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3911
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3912 /* Setup the outer pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3913 vpaned = gtk_vpaned_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3914 gtk_widget_show(vpaned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3915
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3916 /* Setup the top part of the pane. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3917 vbox = gtk_vbox_new(FALSE, 6);
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
3918 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3919 gtk_widget_show(vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3920
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3921 if (gc != NULL)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3922 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3923
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3924 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3925 {
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3926 hbox = gtk_hbox_new(FALSE, 6);
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3927 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3928 gtk_widget_show(hbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3929
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3930 label = gtk_label_new(_("Topic:"));
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3931 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3932 gtk_widget_show(label);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3933
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3934 gtkchat->topic_text = gtk_entry_new();
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3935
7971
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3936 if(prpl_info->set_chat_topic == NULL) {
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3937 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3938 } else {
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3939 g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate",
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3940 G_CALLBACK(topic_callback), conv);
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3941 }
a9309feca3c8 [gaim-migrate @ 8648]
Nathan Walp <nwalp@pidgin.im>
parents: 7961
diff changeset
3942
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3943 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3944 gtk_widget_show(gtkchat->topic_text);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3945 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3946
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3947 /* Setup the horizontal pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3948 hpaned = gtk_hpaned_new();
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3949 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3950 gtk_widget_show(hpaned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3951
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3952 /* Setup the scrolled window to put gtkimhtml in. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3953 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3954 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8068
diff changeset
3955 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3956 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3957 GTK_SHADOW_IN);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3958 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3959
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3960 gtk_widget_set_size_request(gtkconv->sw,
5550
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3961 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"),
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3962 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height"));
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3963
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
3964 g_signal_connect(G_OBJECT(gtkconv->sw), "size-allocate",
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
3965 G_CALLBACK(size_allocate_cb), conv);
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
3966
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3967 gtk_widget_show(gtkconv->sw);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3968
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3969 /* Setup gtkihmtml. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3970 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8998
diff changeset
3971 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3972 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3973
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3974 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3975 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3976
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3977 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3978 G_CALLBACK(entry_stop_rclick_cb), NULL);
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
3979 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event",
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3980 G_CALLBACK(refocus_entry_cb), gtkconv);
8109
aa340d7d9b54 [gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8108
diff changeset
3981 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event",
aa340d7d9b54 [gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8108
diff changeset
3982 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3983
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3984 gaim_setup_imhtml(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3985 gtk_widget_show(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3986
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3987 /* Build the right pane. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
3988 lbox = gtk_vbox_new(FALSE, 6);
4409
a2526adf0f4b [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3989 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3990 gtk_widget_show(lbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3991
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3992 /* Setup the label telling how many people are in the room. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3993 gtkchat->count = gtk_label_new(_("0 people in room"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3994 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3995 gtk_widget_show(gtkchat->count);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3996
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3997 /* Setup the list of users. */
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3998 sw = gtk_scrolled_window_new(NULL, NULL);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
3999 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8068
diff changeset
4000 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4001 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4002 gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4003 gtk_widget_show(sw);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4004
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
4005 ls = gtk_list_store_new(CHAT_USERS_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING,
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
4006 G_TYPE_INT);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
4007 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(ls), CHAT_USERS_NAME_COLUMN,
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
4008 sort_chat_users, NULL, NULL);
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
4009 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), CHAT_USERS_NAME_COLUMN,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4010 GTK_SORT_ASCENDING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4011
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4012 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4013
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
4014 rend = gtk_cell_renderer_pixbuf_new();
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
4015
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4016 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
4017 "pixbuf", CHAT_USERS_ICON_COLUMN, NULL);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
4018 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
4019
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
4020 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4021
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4022 g_signal_connect(G_OBJECT(list), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4023 G_CALLBACK(right_click_chat_cb), conv);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
4024 g_signal_connect(G_OBJECT(list), "popup-menu",
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
4025 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4026
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
4027 rend = gtk_cell_renderer_text_new();
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
4028
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4029 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
9498
432fc90c7e22 [gaim-migrate @ 10324]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9497
diff changeset
4030 "text", CHAT_USERS_NAME_COLUMN, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4031 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4032
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4033 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4034
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4035 gtk_widget_set_size_request(list, 150, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4036
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4037 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4038 gtk_widget_show(list);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4039
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4040 gtkchat->list = list;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4041
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4042 gtk_container_add(GTK_CONTAINER(sw), list);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4043
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4044 /* Setup the user list toolbar. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4045 bbox = gtk_hbox_new(TRUE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4046 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4047 gtk_widget_show(bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4048
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4049 /* IM */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4050 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4051 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4052 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4053 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
4054 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4055 g_signal_connect(G_OBJECT(button), "clicked",
7961
3b87f00fc0c9 [gaim-migrate @ 8638]
Nathan Walp <nwalp@pidgin.im>
parents: 7956
diff changeset
4056 G_CALLBACK(chat_im_button_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4057
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4058 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4059
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4060 /* Ignore */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4061 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4062 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4063 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4064 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
4065 gtk_tooltips_set_tip(gtkconv->tooltips, button,
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
4066 _("Ignore the user"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4067 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4068 G_CALLBACK(ignore_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4069 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4070
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4071 /* Info */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4072 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4073 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4074 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4075 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4076 gtk_tooltips_set_tip(gtkconv->tooltips, button,
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
4077 _("Get the user's information"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4078 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4079 G_CALLBACK(info_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4080
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4081 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4082
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4083 gtkconv->info = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4084
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4085 /* Build the toolbar. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4086 vbox = gtk_vbox_new(FALSE, 6);
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
4087 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, TRUE);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4088 gtk_widget_show(vbox);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4089
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
4090 gtkconv->toolbar = gtk_imhtmltoolbar_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
4091 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar, FALSE, FALSE, 0);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4092
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4093 gtkconv->lower_hbox = gtk_hbox_new(FALSE, 6);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4094 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->lower_hbox, TRUE, TRUE, 0);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4095 gtk_widget_show(gtkconv->lower_hbox);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4096
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4097 vbox = gtk_vbox_new(FALSE, 6);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4098 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox, TRUE, TRUE, 0);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4099 gtk_widget_show(vbox);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4100
8123
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4101 /* Setup the entry widget.
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4102 * We never show the horizontal scrollbar because it was causing weird
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4103 * lockups when typing text just as you type the character that would
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4104 * cause both scrollbars to appear. Definitely seems like a gtk bug.
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4105 */
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4106 sw = gtk_scrolled_window_new(NULL, NULL);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4107 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8112
f98100df20cb [gaim-migrate @ 8813]
Mark Doliner <markdoliner@pidgin.im>
parents: 8109
diff changeset
4108 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4109 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4110 GTK_SHADOW_IN);
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4111 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4112 gtk_widget_show(sw);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4113
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4114 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8998
diff changeset
4115 gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry");
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4116 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4117 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts"));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4118 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4119 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts"));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4120
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4121 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
9699
d1ca5dd91cc2 [gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents: 9696
diff changeset
4122 gaim_account_get_protocol_name(conv->account));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4123 gtkconv->entry_buffer =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4124 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4125 gaim_setup_imhtml(gtkconv->entry);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4126 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4127 default_formatize(conv);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4128 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4129 GTK_WRAP_WORD_CHAR);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4130 gtk_widget_set_size_request(gtkconv->entry, -1,
8106
6684152d3bfb [gaim-migrate @ 8806]
Mark Doliner <markdoliner@pidgin.im>
parents: 8105
diff changeset
4131 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"));
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4132 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4133
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4134 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
4135 G_CALLBACK(entry_key_press_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4136 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4137 G_CALLBACK(entry_stop_rclick_cb), NULL);
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
4138 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate",
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
4139 G_CALLBACK(size_allocate_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4140
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4141 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
4142 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4143 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4144 gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4145
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4146 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4147 gtk_widget_show(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4148
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4149 /* Setup the bottom button box. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4150 gtkconv->bbox = gtk_hbox_new(FALSE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4151 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4152 setup_chat_buttons(conv, gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4153
9080
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4154 /*
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4155 * Focus for chat windows should be as follows:
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4156 * Tab title -> chat topic -> conversation scrollback -> user list ->
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4157 * user list buttons -> entry -> buttons at bottom
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4158 */
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4159 focus_chain = g_list_prepend(focus_chain, gtkconv->bbox);
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4160 focus_chain = g_list_prepend(focus_chain, gtkconv->entry);
9080
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4161 gtk_container_set_focus_chain(GTK_CONTAINER(vbox), focus_chain);
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4162
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4163 return vpaned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4164 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4165
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4166 static GtkWidget *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4167 setup_im_pane(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4168 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4169 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4170 GaimGtkImPane *gtkim;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4171 GtkWidget *paned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4172 GtkWidget *vbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4173 GtkWidget *vbox2;
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4174 GtkWidget *sw;
9080
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4175 GList *focus_chain = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4176
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4177 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4178 gtkim = gtkconv->u.im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4179
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4180 /* Setup the outer pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4181 paned = gtk_vpaned_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4182 gtk_widget_show(paned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4183
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4184 /* Setup the top part of the pane. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4185 vbox = gtk_vbox_new(FALSE, 6);
4409
a2526adf0f4b [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
4186 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4187 gtk_widget_show(vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4188
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4189 /* Setup the gtkimhtml widget. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4190 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4191 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
8076
1c3c1ad737e8 [gaim-migrate @ 8775]
Mark Doliner <markdoliner@pidgin.im>
parents: 8068
diff changeset
4192 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4193 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4194 GTK_SHADOW_IN);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4195 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0);
4851
7d23d765eda1 [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
4196
5550
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
4197 gtk_widget_set_size_request(gtkconv->sw,
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
4198 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"),
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
4199 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height"));
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
4200 g_signal_connect(G_OBJECT(gtkconv->sw), "size-allocate",
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
4201 G_CALLBACK(size_allocate_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4202 gtk_widget_show(gtkconv->sw);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4203
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4204 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8998
diff changeset
4205 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4206 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4207
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4208 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4209 G_CALLBACK(entry_stop_rclick_cb), NULL);
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
4210 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event",
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
4211 G_CALLBACK(refocus_entry_cb), gtkconv);
8109
aa340d7d9b54 [gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8108
diff changeset
4212 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event",
aa340d7d9b54 [gaim-migrate @ 8810]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8108
diff changeset
4213 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4214
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4215 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4216 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4217 gaim_setup_imhtml(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4218 gtk_widget_show(gtkconv->imhtml);
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4219 vbox2 = gtk_vbox_new(FALSE, 6);
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
4220 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, TRUE);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4221 gtk_widget_show(vbox2);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4222
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4223 /* Build the toolbar. */
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
4224 gtkconv->toolbar = gtk_imhtmltoolbar_new();
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
4225 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar, FALSE, FALSE, 0);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4226
8123
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4227 /* Setup the entry widget.
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4228 * We never show the horizontal scrollbar because it was causing weird
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4229 * lockups when typing text just as you type the character that would
8123
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4230 * cause both scrollbars to appear. Definitely seems like a gtk bug.
e09c75f511c2 [gaim-migrate @ 8827]
Mark Doliner <markdoliner@pidgin.im>
parents: 8112
diff changeset
4231 */
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4232 gtkconv->lower_hbox = gtk_hbox_new(FALSE, 6);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4233 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->lower_hbox, TRUE, TRUE, 0);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4234 gtk_widget_show(gtkconv->lower_hbox);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4235
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4236 vbox2 = gtk_vbox_new(FALSE, 6);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4237 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox2, TRUE, TRUE, 0);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4238 gtk_widget_show(vbox2);
8821
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
4239
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4240 sw = gtk_scrolled_window_new(NULL, NULL);
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4241 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
8112
f98100df20cb [gaim-migrate @ 8813]
Mark Doliner <markdoliner@pidgin.im>
parents: 8109
diff changeset
4242 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4243 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4244 GTK_SHADOW_IN);
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4245 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0);
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4246 gtk_widget_show(sw);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4247
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4248 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8998
diff changeset
4249 gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry");
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4250
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4251 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4252 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts"));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4253 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4254 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts"));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4255
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
4256 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry),
9699
d1ca5dd91cc2 [gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents: 9696
diff changeset
4257 gaim_account_get_protocol_name(conv->account));
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4258 gtkconv->entry_buffer =
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4259 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
8061
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4260 gaim_setup_imhtml(gtkconv->entry);
a765ea99b49f [gaim-migrate @ 8749]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
4261 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4262 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry),
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4263 GTK_WRAP_WORD_CHAR);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4264 gtk_widget_set_size_request(gtkconv->entry, -1,
8106
6684152d3bfb [gaim-migrate @ 8806]
Mark Doliner <markdoliner@pidgin.im>
parents: 8105
diff changeset
4265 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"));
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4266 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
4267
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4268 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
4269 G_CALLBACK(entry_key_press_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4270 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4271 G_CALLBACK(entry_stop_rclick_cb), NULL);
8914
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
4272 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate",
e510dd903bfb [gaim-migrate @ 9684]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8912
diff changeset
4273 G_CALLBACK(size_allocate_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4274
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4275 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4276 G_CALLBACK(insert_text_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4277 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4278 G_CALLBACK(delete_text_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4279
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4280 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
4281 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4282
7949
6c8206406511 [gaim-migrate @ 8623]
Mark Doliner <markdoliner@pidgin.im>
parents: 7946
diff changeset
4283 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4284 gtk_widget_show(gtkconv->entry);
8319
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
4285 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
6c18762beceb [gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
4286 gtkconv->entry);
8481
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8458
diff changeset
4287 /* had to move this after the imtoolbar is attached so that the
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8458
diff changeset
4288 * signals get fired to toggle the buttons on the toolbar as well.
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8458
diff changeset
4289 */
7a9eb76e8eee [gaim-migrate @ 9214]
Gary Kramlich <grim@pidgin.im>
parents: 8458
diff changeset
4290 default_formatize(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4291
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
4292 /* Setup the bottom button box. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4293 gtkconv->bbox = gtk_hbox_new(FALSE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4294 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4295 setup_im_buttons(conv, gtkconv->bbox);
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
4296
8758
940afe5423a9 [gaim-migrate @ 9513]
Mark Doliner <markdoliner@pidgin.im>
parents: 8756
diff changeset
4297 gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons");
9687
489b6b200876 [gaim-migrate @ 10539]
Sean Egan <seanegan@pidgin.im>
parents: 9683
diff changeset
4298 gtkconv->u.im->show_icon = TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4299
9080
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4300 /*
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4301 * Focus for IM windows should be as follows:
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4302 * Tab title -> conversation scrollback -> entry -> buttons at bottom
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4303 */
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4304 focus_chain = g_list_prepend(focus_chain, gtkconv->bbox);
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
4305 focus_chain = g_list_prepend(focus_chain, gtkconv->entry);
9080
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4306 gtk_container_set_focus_chain(GTK_CONTAINER(vbox2), focus_chain);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8133
diff changeset
4307
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4308 return paned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4309 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4310
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4311 static void
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4312 conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4313 GtkSelectionData *sd, guint info, guint t,
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4314 GaimConversation *conv)
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4315 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4316 GaimConvWindow *win = conv->window;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4317 GaimConversation *c;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4318 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4319 {
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
4320 GaimBlistNode *n = NULL;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4321 GaimBuddy *b;
9622
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4322 unsigned int index;
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4323
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
4324 memcpy(&n, sd->data, sizeof(n));
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4325
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4326 if (GAIM_BLIST_NODE_IS_CONTACT(n))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4327 b = gaim_contact_get_priority_buddy((GaimContact*)n);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4328 else if (GAIM_BLIST_NODE_IS_BUDDY(n))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4329 b = (GaimBuddy*)n;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4330 else
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
4331 return;
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4332
9622
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4333 /*
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4334 * If we already have an open conversation with this buddy, then
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4335 * just move the conv to this window. Otherwise, create a new
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4336 * conv and add it to this window.
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4337 */
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4338 c = gaim_find_conversation(b->name);
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4339 if (c != NULL) {
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4340 GaimConvWindow *oldwin;
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4341 oldwin = gaim_conversation_get_window(c);
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4342 index = gaim_conversation_get_index(c);
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4343 if (oldwin != win) {
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4344 gaim_conv_window_remove_conversation(oldwin, index);
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4345 gaim_conv_window_add_conversation(win, c);
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4346 }
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4347 } else {
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4348 c = gaim_conversation_new(GAIM_CONV_IM, b->account, b->name);
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4349 gaim_conv_window_add_conversation(win, c);
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4350 }
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4351
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4352 /* Make this conversation the active conversation */
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4353 index = gaim_conversation_get_index(c);
e86bf8cf1fac [gaim-migrate @ 10466]
Mark Doliner <markdoliner@pidgin.im>
parents: 9614
diff changeset
4354 gaim_conv_window_switch_conversation(win, index);
8802
210f40a52277 [gaim-migrate @ 9564]
Christian Hammond <chipx86@chipx86.com>
parents: 8758
diff changeset
4355
210f40a52277 [gaim-migrate @ 9564]
Christian Hammond <chipx86@chipx86.com>
parents: 8758
diff changeset
4356 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
4702
49006c93f70c [gaim-migrate @ 5013]
Sean Egan <seanegan@pidgin.im>
parents: 4689
diff changeset
4357 }
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4358 else if (sd->target == gdk_atom_intern("application/x-im-contact", FALSE))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4359 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4360 char *protocol = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4361 char *username = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4362 GaimAccount *account;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4363
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4364 if (gaim_gtk_parse_x_im_contact(sd->data, FALSE, &account,
7718
063aababbbea [gaim-migrate @ 8363]
Sean Egan <seanegan@pidgin.im>
parents: 7717
diff changeset
4365 &protocol, &username, NULL))
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4366 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4367 if (account == NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4368 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4369 gaim_notify_error(NULL, NULL,
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4370 _("You are not currently signed on with an account that "
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4371 "can add that buddy."), NULL);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4372 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4373 else
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4374 {
7718
063aababbbea [gaim-migrate @ 8363]
Sean Egan <seanegan@pidgin.im>
parents: 7717
diff changeset
4375 c = gaim_conversation_new(GAIM_CONV_IM, account, username);
063aababbbea [gaim-migrate @ 8363]
Sean Egan <seanegan@pidgin.im>
parents: 7717
diff changeset
4376 gaim_conv_window_add_conversation(win, c);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4377 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4378 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4379
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4380 if (username != NULL) g_free(username);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4381 if (protocol != NULL) g_free(protocol);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4382
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4383 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4384 }
9525
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9504
diff changeset
4385 else if (sd->target == gdk_atom_intern("text/uri-list", FALSE)) {
9673
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4386 GList *tmp;
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4387 GList *files = gaim_uri_list_extract_filenames(sd->data);
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4388 for(tmp = files; tmp != NULL ; tmp = g_list_next(tmp)) {
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4389 gchar *filename = tmp->data;
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4390 /* XXX - Make ft API support creating a transfer with more than one file */
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4391 if (g_file_test(filename, G_FILE_TEST_EXISTS)
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4392 && !g_file_test(filename, G_FILE_TEST_IS_DIR)
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4393 && gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4394 serv_send_file(gaim_conversation_get_gc(conv),
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4395 gaim_conversation_get_name(conv), filename);
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4396 }
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4397 g_free(filename);
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9493
diff changeset
4398 }
9673
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4399 g_list_free(files);
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4400 /* XXX - Attempt to load this file into gdk_pixbuf, or otherwise determine if it is an image. If it is, offer
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4401 * the choice of a) sending this file b) inserting this file as an IM image or c) setting this file as a custom
4cc427f552ab [gaim-migrate @ 10525]
Daniel Atallah <datallah@pidgin.im>
parents: 9670
diff changeset
4402 * buddy icon for this buddy */
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9493
diff changeset
4403 }
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9493
diff changeset
4404 gtk_drag_finish(dc, FALSE, FALSE, t);
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4405 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4406
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4407 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4408 * GTK+ window ops
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4409 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4410 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4411 gaim_gtk_new_window(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4412 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4413 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4414 GtkPositionType pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4415 GtkWidget *testidea;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4416 GtkWidget *menubar;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4417
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4418 gtkwin = g_malloc0(sizeof(GaimGtkWindow));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4419
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4420 win->ui_data = gtkwin;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4421
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4422 /* Create the window. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4423 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4424 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation");
9614
4da9c73665c3 [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
4425 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE);
4510
deb241b1189c [gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents: 4505
diff changeset
4426 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0);
9614
4da9c73665c3 [gaim-migrate @ 10458]
Luke Schierer <lschiere@pidgin.im>
parents: 9613
diff changeset
4427 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4428
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4429 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4430 G_CALLBACK(close_win_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4431
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4432 /* Create the notebook. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4433 gtkwin->notebook = gtk_notebook_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4434
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4435 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4436
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4437 #if 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4438 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4439 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4440 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4441 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4442 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4443 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook));
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4444 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE);
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4445
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4446 gtk_widget_show(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4447
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
4448 g_signal_connect(G_OBJECT(gtkwin->notebook), "switch_page",
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
4449 G_CALLBACK(before_switch_conv_cb), win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4450 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4451 G_CALLBACK(switch_conv_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4452
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4453 /* Setup the tab drag and drop signals. */
4486
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
4454 gtk_widget_add_events(gtkwin->notebook,
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
4455 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
4456 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event",
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4457 G_CALLBACK(notebook_press_cb), win);
4486
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
4458 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event",
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4459 G_CALLBACK(notebook_release_cb), win);
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4460
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4461 testidea = gtk_vbox_new(FALSE, 0);
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4462
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4463 /* Setup the menubar. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4464 menubar = setup_menubar(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4465 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4466
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4467 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4468
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4469 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4470
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4471 gtk_widget_show(testidea);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4472 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4473
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4474 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4475 gaim_gtk_destroy_window(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4476 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4477 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4478
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4479 gtk_widget_destroy(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4480
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
4481 g_object_unref(G_OBJECT(gtkwin->menu.item_factory));
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
4482
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4483 g_free(gtkwin);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4484 win->ui_data = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4485 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4486
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4487 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4488 gaim_gtk_show(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4489 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4490 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4491
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4492 gtk_widget_show(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4493 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4494
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4495 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4496 gaim_gtk_hide(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4497 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4498 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4499
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4500 gtk_widget_hide(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4501 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4502
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4503 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4504 gaim_gtk_raise(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4505 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4506 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4507
9728
038c6946e043 [gaim-migrate @ 10589]
Mark Doliner <markdoliner@pidgin.im>
parents: 9714
diff changeset
4508 gtk_widget_show(gtkwin->window);
038c6946e043 [gaim-migrate @ 10589]
Mark Doliner <markdoliner@pidgin.im>
parents: 9714
diff changeset
4509 gtk_window_deiconify(GTK_WINDOW(gtkwin->window));
038c6946e043 [gaim-migrate @ 10589]
Mark Doliner <markdoliner@pidgin.im>
parents: 9714
diff changeset
4510 gdk_window_raise(gtkwin->window->window);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4511 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4512
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4513 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4514 gaim_gtk_flash(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4515 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4516 #ifdef _WIN32
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4517 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4518
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4519 wgaim_conv_im_blink(gtkwin->window);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4520 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4521 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4522
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4523 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4524 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4525 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4526 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4527
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4528 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4529
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4530 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4531 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4532
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4533 static const GtkTargetEntry te[] =
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4534 {
9525
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9504
diff changeset
4535 {"text/uri-list", 0, 0},
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9504
diff changeset
4536 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 1},
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9504
diff changeset
4537 {"text/plain", 0, 2},
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4538 {"STRING", 0, 3},
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7700
diff changeset
4539 {"application/x-im-contact", 0, 4}
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4540 };
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4541
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4542 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4543 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4544 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4545 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4546 GaimGtkConversation *gtkconv, *focus_gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4547 GaimConversation *focus_conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4548 GtkWidget *pane = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4549 GtkWidget *tab_cont;
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4550 GtkWidget *tabby, *menu_tabby;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4551 gboolean new_ui;
4383
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4552 GaimConversationType conv_type;
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4553 const char *name;
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4554
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4555 name = gaim_conversation_get_name(conv);
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4556 conv_type = gaim_conversation_get_type(conv);
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4557 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4558
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4559 if (conv->ui_data != NULL) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4560 gtkconv = (GaimGtkConversation *)conv->ui_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4561
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4562 tab_cont = gtkconv->tab_cont;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4563
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4564 new_ui = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4565 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4566 else {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4567 gtkconv = g_malloc0(sizeof(GaimGtkConversation));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4568 conv->ui_data = gtkconv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4569
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4570 /* Setup some initial variables. */
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
4571 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4572 gtkconv->tooltips = gtk_tooltips_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4573
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4574 if (conv_type == GAIM_CONV_IM) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4575 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4576 gtkconv->u.im->a_virgin = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4577
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4578 pane = setup_im_pane(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4579 }
7879
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4580 else if (conv_type == GAIM_CONV_CHAT) {
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4581 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane));
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4582
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4583 pane = setup_chat_pane(conv);
8e5689b82138 [gaim-migrate @ 8533]
Mark Doliner <markdoliner@pidgin.im>
parents: 7859
diff changeset
4584 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4585
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4586 if (pane == NULL) {
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4587 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat);
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4588 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4589
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4590 g_free(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4591 conv->ui_data = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4592
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4593 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4594 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4595
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4596 /* Setup drag-and-drop */
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4597 gtk_drag_dest_set(pane,
9300
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4598 GTK_DEST_DEFAULT_MOTION |
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4599 GTK_DEST_DEFAULT_DROP,
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4600 te, sizeof(te) / sizeof(GtkTargetEntry),
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4601 GDK_ACTION_COPY);
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4602 gtk_drag_dest_set(pane,
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4603 GTK_DEST_DEFAULT_MOTION |
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4604 GTK_DEST_DEFAULT_DROP,
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4605 te, sizeof(te) / sizeof(GtkTargetEntry),
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4606 GDK_ACTION_COPY);
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4607 gtk_drag_dest_set(gtkconv->imhtml, 0,
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4608 te, sizeof(te) / sizeof(GtkTargetEntry),
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4609 GDK_ACTION_COPY);
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4610
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4611 gtk_drag_dest_set(gtkconv->entry, 0,
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4612 te, sizeof(te) / sizeof(GtkTargetEntry),
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4613 GDK_ACTION_COPY);
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4614
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4615 g_signal_connect(G_OBJECT(pane), "drag_data_received",
9300
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4616 G_CALLBACK(conv_dnd_recv), conv);
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4617 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received",
9300
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4618 G_CALLBACK(conv_dnd_recv), conv);
8105
54ea897b764e [gaim-migrate @ 8805]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8091
diff changeset
4619 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received",
9300
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4620 G_CALLBACK(conv_dnd_recv), conv);
eefa5cc2f465 [gaim-migrate @ 10104]
Sean Egan <seanegan@pidgin.im>
parents: 9297
diff changeset
4621
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4622 /* Setup the container for the tab. */
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4623 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 6);
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4624 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4625 gtk_container_add(GTK_CONTAINER(tab_cont), pane);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4626 gtk_widget_show(pane);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4627
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4628 new_ui = TRUE;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4629
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4630 gtkconv->make_sound = TRUE;
5902
6f9b6b4037b0 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
4631
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4632 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4633 "/gaim/gtk/conversations/show_formatting_toolbar");
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4634
8329
037bac180bc4 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4635 if (gtkconv->show_formatting_toolbar)
037bac180bc4 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4636 gtk_widget_show(gtkconv->toolbar);
037bac180bc4 [gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents: 8319
diff changeset
4637
9188
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
4638 gtkconv->show_timestamps = gaim_prefs_get_bool(
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
4639 "/gaim/gtk/conversations/show_timestamps");
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
4640
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
4641 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
4642 gtkconv->show_timestamps);
a399de5ce807 [gaim-migrate @ 9983]
Mark Doliner <markdoliner@pidgin.im>
parents: 9175
diff changeset
4643
8176
e975e210d1d5 [gaim-migrate @ 8890]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8173
diff changeset
4644 g_signal_connect_swapped(G_OBJECT(pane), "focus",
9080
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4645 G_CALLBACK(gtk_widget_grab_focus),
e687d72cbcb4 [gaim-migrate @ 9856]
Mark Doliner <markdoliner@pidgin.im>
parents: 9049
diff changeset
4646 gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4647 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4648
8253
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4649 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 6);
f69488ceda98 [gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents: 8252
diff changeset
4650 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 6);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4651
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4652 /* Close button. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4653 gtkconv->close = gtk_button_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4654 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16);
7446
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4655 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4656 gtk_container_add(GTK_CONTAINER(gtkconv->close),
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4657 gtk_image_new_from_stock(GTK_STOCK_CLOSE,
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4658 GTK_ICON_SIZE_MENU));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4659 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close,
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4660 _("Close conversation"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4661
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4662 g_signal_connect(G_OBJECT(gtkconv->close), "clicked",
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4663 G_CALLBACK(close_conv_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4664
7446
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4665 /*
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4666 * I love Galeon. They have a fix for that stupid annoying visible
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4667 * border bug. I love you guys! -- ChipX86
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4668 */
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4669 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed",
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4670 G_CALLBACK(tab_close_button_state_changed_cb), NULL);
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4671
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4672 /* Status icon. */
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
4673 gtkconv->icon = gtk_image_new();
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4674 gtkconv->menu_icon = gtk_image_new();
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
4675 update_tab_icon(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4676
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4677 /* Tab label. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4678 gtkconv->tab_label = gtk_label_new(gaim_conversation_get_title(conv));
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4679 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4680 #if 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4681 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4682 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4683 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4684
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4685 /* Pack it all together. */
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4686 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0);
8407
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4687 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon,
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4688 FALSE, FALSE, 0);
0f9d77fe1dc6 [gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents: 8380
diff changeset
4689
8946
9dd17283a2ee [gaim-migrate @ 9718]
Mark Doliner <markdoliner@pidgin.im>
parents: 8944
diff changeset
4690 gtk_widget_show_all(gtkconv->icon);
9dd17283a2ee [gaim-migrate @ 9718]
Mark Doliner <markdoliner@pidgin.im>
parents: 8944
diff changeset
4691 gtk_widget_show_all(gtkconv->menu_icon);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4692
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4693 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4694 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0);
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4695 gtk_widget_show(gtkconv->tab_label);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4696 gtk_widget_show(gtkconv->menu_label);
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4697 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4698
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4699 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4700 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs"))
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4701 gtk_widget_show_all(gtkconv->close);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4702
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4703 gtk_widget_show(tabby);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4704 gtk_widget_show(menu_tabby);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4705
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4706 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4707 gaim_gtkconv_update_buddy_icon(conv);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4708
9297
75204ab6a6d7 [gaim-migrate @ 10100]
Mark Doliner <markdoliner@pidgin.im>
parents: 9287
diff changeset
4709 /* Add this pane to the conversation's notebook. */
9606
f5a6e772fc9f [gaim-migrate @ 10449]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9605
diff changeset
4710 gtk_notebook_append_page_menu(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby, menu_tabby);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4711
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4712 gtk_widget_show(tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4713
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4714 if (gaim_conv_window_get_conversation_count(win) == 1) {
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4715 /* Er, bug in notebooks? Switch to the page manually. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4716 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0);
4851
7d23d765eda1 [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
4717
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4718 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4719 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4720 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4721 else
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4722 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4723
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4724 focus_conv = g_list_nth_data(gaim_conv_window_get_conversations(win),
5204
deed98aa3181 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4725 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)));
deed98aa3181 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4726 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv);
deed98aa3181 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4727 gtk_widget_grab_focus(focus_gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4728
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4729 if (!new_ui)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4730 g_object_unref(gtkconv->tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4731
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4732 if (gaim_conv_window_get_conversation_count(win) == 1)
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
4733 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4734 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4735
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4736 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4737 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4738 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4739 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4740 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4741 unsigned int index;
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4742 GaimConversationType conv_type;
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4743
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4744 conv_type = gaim_conversation_get_type(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4745 index = gaim_conversation_get_index(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4746
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4747 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4748 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4749
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4750 g_object_ref(gtkconv->tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4751 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4752
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4753 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4754
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4755 /* go back to tabless if need be */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4756 if (gaim_conv_window_get_conversation_count(win) <= 2) {
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4757 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4758 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4759 }
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4760
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4761
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4762 /* If this window is setup with an inactive gc, regenerate the menu. */
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4763 if (conv_type == GAIM_CONV_IM &&
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4764 gaim_conversation_get_gc(conv) == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4765
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
4766 generate_send_as_items(win, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4767 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4768 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4769
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4770 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4771 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4772 unsigned int new_index)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4773 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4774 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4775 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4776
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4777 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4778 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4779
4415
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4780 if (new_index > gaim_conversation_get_index(conv))
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4781 new_index--;
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4782
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4783 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4784 gtkconv->tab_cont, new_index);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4785 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4786
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4787 static int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4788 gaim_gtk_get_active_index(const GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4789 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4790 GaimGtkWindow *gtkwin;
5680
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4791 int index;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4792
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4793 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4794
5680
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4795 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook));
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4796
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4797 /*
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4798 * A fix, because the first conversation may be active, but not
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4799 * appear in the notebook just yet. -- ChipX86
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4800 */
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4801 return (index == -1 ? 0 : index);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4802 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4803
9260
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4804 static gboolean
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4805 gaim_gtk_has_focus(GaimConvWindow *win)
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4806 {
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4807 GaimGtkWindow *gtkwin;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4808 gboolean has_focus = FALSE;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4809
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4810 gtkwin = GAIM_GTK_WINDOW(win);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4811 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4812
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4813 return has_focus;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4814 }
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4815
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4816 static GaimConvWindowUiOps window_ui_ops =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4817 {
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4818 gaim_gtk_conversations_get_conv_ui_ops,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4819 gaim_gtk_new_window,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4820 gaim_gtk_destroy_window,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4821 gaim_gtk_show,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4822 gaim_gtk_hide,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4823 gaim_gtk_raise,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4824 gaim_gtk_flash,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4825 gaim_gtk_switch_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4826 gaim_gtk_add_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4827 gaim_gtk_remove_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4828 gaim_gtk_move_conversation,
9260
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4829 gaim_gtk_get_active_index,
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
4830 gaim_gtk_has_focus
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4831 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4832
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4833 GaimConvWindowUiOps *
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4834 gaim_gtk_conversations_get_win_ui_ops(void)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4835 {
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4836 return &window_ui_ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4837 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4838
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4839 /**************************************************************************
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4840 * Conversation UI operations
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4841 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4842 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4843 gaim_gtkconv_destroy(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4844 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4845 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4846
9504
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
4847 /* If the "Save Conversation" or "Save Icon" dialogs are open then close them */
42685167dd38 [gaim-migrate @ 10331]
Mark Doliner <markdoliner@pidgin.im>
parents: 9498
diff changeset
4848 gaim_request_close_with_handle(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4849
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4850 gtk_widget_destroy(gtkconv->tab_cont);
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4859
diff changeset
4851 g_object_unref(gtkconv->tab_cont);
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4852
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4853 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4755
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4854 if (gtkconv->u.im->icon_timer != 0)
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4855 g_source_remove(gtkconv->u.im->icon_timer);
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4856
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4857 if (gtkconv->u.im->anim != NULL)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4858 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4859
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4860 g_free(gtkconv->u.im);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4861 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4862 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4863 g_free(gtkconv->u.chat);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4864 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4865
4633
7966149b2603 [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4866 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips));
7966149b2603 [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4867
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4868 g_free(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4869 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4870
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4871 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4872 gaim_gtkconv_write_im(GaimConversation *conv, const char *who,
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4873 const char *message, GaimMessageFlags flags,
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4874 time_t mtime)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4875 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4876 GaimGtkConversation *gtkconv;
8630
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4877 GaimConvWindow *gaimwin;
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4878 GaimGtkWindow *gtkwin;
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4879 gboolean has_focus;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4880
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4881 gtkconv = GAIM_GTK_CONVERSATION(conv);
8630
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4882 gaimwin = gaim_conversation_get_window(conv);
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4883 gtkwin = GAIM_GTK_WINDOW(gaimwin);
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4884
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4885 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4886
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4887 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
9301
c05274a72788 [gaim-migrate @ 10105]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9300
diff changeset
4888 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4889
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4890 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4891 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4892
4382
fd60cabf2bae [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4893 /* Play a sound, if specified in prefs. */
8630
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4894 if (gtkconv->make_sound && !((gaim_conv_window_get_active_conversation(gaimwin) == conv) &&
8633
fdbdbbb2eed3 [gaim-migrate @ 9385]
Mark Doliner <markdoliner@pidgin.im>
parents: 8630
diff changeset
4895 !gaim_prefs_get_bool("/gaim/gtk/sound/conv_focus") && has_focus)) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4896 if (flags & GAIM_MESSAGE_RECV) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4897 if (gtkconv->u.im->a_virgin &&
5820
93bcc8fca197 [gaim-migrate @ 6250]
Nathan Walp <nwalp@pidgin.im>
parents: 5754
diff changeset
4898 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4899
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4900 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4901 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4902 else
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4903 gaim_sound_play_event(GAIM_SOUND_RECEIVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4904 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4905 else {
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4906 gaim_sound_play_event(GAIM_SOUND_SEND);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4907 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4908 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4909
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4910 gtkconv->u.im->a_virgin = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4911
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4912 gaim_conversation_write(conv, who, message, flags, mtime);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4913 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4914
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4915 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4916 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who,
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4917 const char *message, GaimMessageFlags flags, time_t mtime)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4918 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4919 GaimGtkConversation *gtkconv;
8630
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4920 GaimConvWindow *gaimwin;
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4921 GaimGtkWindow *gtkwin;
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4922 gboolean has_focus;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4923
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4924 gtkconv = GAIM_GTK_CONVERSATION(conv);
8630
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4925 gaimwin = gaim_conversation_get_window(conv);
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4926 gtkwin = GAIM_GTK_WINDOW(gaimwin);
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4927
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4928 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4929
4382
fd60cabf2bae [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4930 /* Play a sound, if specified in prefs. */
8630
70cf27cc1765 [gaim-migrate @ 9382]
Mark Doliner <markdoliner@pidgin.im>
parents: 8621
diff changeset
4931 if (gtkconv->make_sound && !((gaim_conv_window_get_active_conversation(gaimwin) == conv) &&
9704
ad0722a04b11 [gaim-migrate @ 10564]
Mark Doliner <markdoliner@pidgin.im>
parents: 9699
diff changeset
4932 !gaim_prefs_get_bool("/gaim/gtk/sound/conv_focus") && has_focus) &&
ad0722a04b11 [gaim-migrate @ 10564]
Mark Doliner <markdoliner@pidgin.im>
parents: 9699
diff changeset
4933 !(flags & GAIM_MESSAGE_DELAYED) &&
ad0722a04b11 [gaim-migrate @ 10564]
Mark Doliner <markdoliner@pidgin.im>
parents: 9699
diff changeset
4934 !(flags & GAIM_MESSAGE_SYSTEM)) {
ad0722a04b11 [gaim-migrate @ 10564]
Mark Doliner <markdoliner@pidgin.im>
parents: 9699
diff changeset
4935
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4936 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND))
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4937 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY);
9704
ad0722a04b11 [gaim-migrate @ 10564]
Mark Doliner <markdoliner@pidgin.im>
parents: 9699
diff changeset
4938 else if (flags & GAIM_MESSAGE_RECV) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4939 if ((flags & GAIM_MESSAGE_NICK) &&
9584
1a6198375303 [gaim-migrate @ 10427]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9572
diff changeset
4940 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4941
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4942 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4943 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4944 else
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4945 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4946 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4947 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4948
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4949 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks"))
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4950 flags |= GAIM_MESSAGE_COLORIZE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4951
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4952 /* Raise the window, if specified in prefs. */
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4953 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
4954 /* we may want to change this */
9301
c05274a72788 [gaim-migrate @ 10105]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9300
diff changeset
4955 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4956
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4957 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4958 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4959
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4960 gaim_conversation_write(conv, who, message, flags, mtime);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4961 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4962
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4963 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4964 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who,
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4965 const char *message, GaimMessageFlags flags,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4966 time_t mtime)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4967 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4968 GaimGtkConversation *gtkconv;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4969 GaimConvWindow *win;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
4970 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4971 int gtk_font_options = 0;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4972 char buf[BUF_LONG];
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4973 char buf2[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4974 char mdate[64];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4975 char color[10];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4976 char *str;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4977 char *with_font_tag;
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4978 char *sml_attrib = NULL;
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4979 size_t length = strlen(message) + 1;
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4980
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4981 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4982 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4983
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4984 win = gaim_conversation_get_window(conv);
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4985
9301
c05274a72788 [gaim-migrate @ 10105]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9300
diff changeset
4986 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
c05274a72788 [gaim-migrate @ 10105]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9300
diff changeset
4987 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
c05274a72788 [gaim-migrate @ 10105]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9300
diff changeset
4988 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) ||
c05274a72788 [gaim-migrate @ 10105]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9300
diff changeset
4989 (gaim_conversation_get_type(conv) == GAIM_CONV_IM &&
c05274a72788 [gaim-migrate @ 10105]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9300
diff changeset
4990 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")))) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4991 gaim_conv_window_show(win);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4992 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4993
8677
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
4994 if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml))))
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
4995 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0);
18b494207322 [gaim-migrate @ 9430]
Tim Ringenbach <marv@pidgin.im>
parents: 8655
diff changeset
4996
5133
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4997 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4998 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime));
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4999 else
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
5000 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5001
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
5002 if(gc)
9699
d1ca5dd91cc2 [gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents: 9696
diff changeset
5003 sml_attrib = g_strdup_printf("sml=\"%s\"",
d1ca5dd91cc2 [gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents: 9696
diff changeset
5004 gaim_account_get_protocol_name(conv->account));
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5005
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5006 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5007
9049
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
5008 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors"))
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
5009 gtk_font_options ^= GTK_IMHTML_NO_COLOURS;
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
5010 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts"))
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
5011 gtk_font_options ^= GTK_IMHTML_NO_FONTS;
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
5012 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes"))
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
5013 gtk_font_options ^= GTK_IMHTML_NO_SIZES;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5014
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7954
diff changeset
5015 /* this is gonna crash one day, I can feel it. */
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7954
diff changeset
5016 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(conv->account)))->options &
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5017 OPT_PROTO_USE_POINTSIZE) {
5367
a2f9e6418413 [gaim-migrate @ 5743]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5329
diff changeset
5018 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE;
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5019 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5020
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5021 if (flags & GAIM_MESSAGE_SYSTEM) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5022 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
8380
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8374
diff changeset
5023 g_snprintf(buf, BUF_LONG, "<FONT SIZE=\"2\">(%s)</FONT> <B>%s</B>",
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5024 mdate, message);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5025 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5026 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5027
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5028 g_snprintf(buf2, sizeof(buf2),
8690
d93670e435c8 [gaim-migrate @ 9443]
Tim Ringenbach <marv@pidgin.im>
parents: 8677
diff changeset
5029 "<FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT>",
7850
2b57bfd4d58b [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
5030 sml_attrib, mdate, message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5031
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5032 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, 0);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5033
7583
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
5034 /* Add the message to a conversations scrollback buffer */
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
5035 conv->history = g_string_append(conv->history, buf);
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
5036 conv->history = g_string_append(conv->history, "<BR>\n");
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5037
8722
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5038 } else if (flags & GAIM_MESSAGE_ERROR) {
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5039 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9622
diff changeset
5040 g_snprintf(buf, BUF_LONG, "<FONT COLOR=\"#ff0000\"><FONT SIZE=\"2\">(%s)</FONT> <B>%s</B></FONT>",
8722
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5041 mdate, message);
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5042 else
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5043 g_snprintf(buf, BUF_LONG, "<FONT COLOR=\"#ff0000\"><B>%s</B></FONT>", message);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5044
8722
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5045 g_snprintf(buf2, sizeof(buf2),
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9622
diff changeset
5046 "<FONT COLOR=\"#ff0000\"><FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT></FONT>",
8722
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5047 sml_attrib, mdate, message);
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5048
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5049 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, 0);
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5050
8722
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5051 /* Add the message to a conversations scrollback buffer */
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5052 conv->history = g_string_append(conv->history, buf);
01a0dc50a5ca [gaim-migrate @ 9477]
Sean Egan <seanegan@pidgin.im>
parents: 8691
diff changeset
5053 conv->history = g_string_append(conv->history, "<BR>\n");
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5054 } else if (flags & GAIM_MESSAGE_NO_LOG) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5055 g_snprintf(buf, BUF_LONG,
8690
d93670e435c8 [gaim-migrate @ 9443]
Tim Ringenbach <marv@pidgin.im>
parents: 8677
diff changeset
5056 "<B><FONT %s COLOR=\"#777777\">%s</FONT></B>",
7850
2b57bfd4d58b [gaim-migrate @ 8504]
Nathan Walp <nwalp@pidgin.im>
parents: 7801
diff changeset
5057 sml_attrib, message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5058
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5059 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5060 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5061 else {
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5062 char *new_message = g_memdup(message, length);
9613
cd81e0c76ec0 [gaim-migrate @ 10456]
Kevin Stange <kstange@pidgin.im>
parents: 9606
diff changeset
5063 char *who_escaped = (who ? g_markup_escape_text(who, strlen(who)) : g_strdup(""));
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5064
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5065 if (flags & GAIM_MESSAGE_WHISPER) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5066 str = g_malloc(1024);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5067
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5068 /* If we're whispering, it's not an autoresponse. */
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
5069 if (gaim_message_meify(new_message, length)) {
8908
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5070 g_snprintf(str, 1024, "***%s", who_escaped);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5071 strcpy(color, "#6C2585");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5072 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5073 else {
8908
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5074 g_snprintf(str, 1024, "*%s*:", who_escaped);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5075 strcpy(color, "#00FF00");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5076 }
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5077 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5078 else {
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
5079 if (gaim_message_meify(new_message, length)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5080 str = g_malloc(1024);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5081
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5082 if (flags & GAIM_MESSAGE_AUTO_RESP)
8908
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5083 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who_escaped);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5084 else
8908
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5085 g_snprintf(str, 1024, "***%s", who_escaped);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5086
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5087 if (flags & GAIM_MESSAGE_NICK)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5088 strcpy(color, "#AF7F00");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5089 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5090 strcpy(color, "#062585");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5091 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5092 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5093 str = g_malloc(1024);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5094 if (flags & GAIM_MESSAGE_AUTO_RESP)
8908
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5095 g_snprintf(str, 1024, "%s %s", who_escaped, AUTO_RESPONSE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5096 else
8908
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5097 g_snprintf(str, 1024, "%s:", who_escaped);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5098 if (flags & GAIM_MESSAGE_NICK)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5099 strcpy(color, "#AF7F00");
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5100 else if (flags & GAIM_MESSAGE_RECV) {
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5101 if (flags & GAIM_MESSAGE_COLORIZE) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5102 const char *u;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5103 int m = 0;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5104
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5105 for (u = who; *u != '\0'; u++)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5106 m += *u;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5107
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5108 m = m % NUM_NICK_COLORS;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5109
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5110 strcpy(color, nick_colors[m]);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5111 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5112 else
7854
b8594b759a30 [gaim-migrate @ 8508]
Sean Egan <seanegan@pidgin.im>
parents: 7853
diff changeset
5113 strcpy(color, RECV_COLOR);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5114 }
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
5115 else if (flags & GAIM_MESSAGE_SEND)
7854
b8594b759a30 [gaim-migrate @ 8508]
Sean Egan <seanegan@pidgin.im>
parents: 7853
diff changeset
5116 strcpy(color, SEND_COLOR);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5117 }
8908
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5118
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5119 if(who_escaped)
ec03c8812d29 [gaim-migrate @ 9678]
Gary Kramlich <grim@pidgin.im>
parents: 8897
diff changeset
5120 g_free(who_escaped);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5121 }
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5122
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5123 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5124 g_snprintf(buf, BUF_LONG,
8380
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8374
diff changeset
5125 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\">(%s)</FONT> "
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5126 "<B>%s</B></FONT> ", color,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5127 sml_attrib ? sml_attrib : "", mdate, str);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5128 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5129 g_snprintf(buf, BUF_LONG,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5130 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5131 sml_attrib ? sml_attrib : "", str);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5132
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5133 g_snprintf(buf2, BUF_LONG,
8380
152ca3f3a3f6 [gaim-migrate @ 9108]
Sean Egan <seanegan@pidgin.im>
parents: 8374
diff changeset
5134 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>"
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5135 "<B>%s</B></FONT> ",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
5136 color, sml_attrib ? sml_attrib : "", mdate, str);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5137
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5138 g_free(str);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5139
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5140 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml),
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5141 buf2, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5142
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5143 if(gc){
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
5144 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : "");
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5145 char *post = "</font>";
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5146 int pre_len = strlen(pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5147 int post_len = strlen(post);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5148
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5149 with_font_tag = g_malloc(length + pre_len + post_len + 1);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5150
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5151 strcpy(with_font_tag, pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5152 memcpy(with_font_tag + pre_len, new_message, length);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5153 strcpy(with_font_tag + pre_len + length, post);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5154
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5155 length += pre_len + post_len;
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5156 g_free(pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5157 }
4608
c165a90c65fc [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4602
diff changeset
5158 else
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
5159 with_font_tag = g_memdup(new_message, length);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5160
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5161 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml),
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8946
diff changeset
5162 with_font_tag, gtk_font_options);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5163
8557
b2e82ebc6cd9 [gaim-migrate @ 9301]
Kevin Stange <kstange@pidgin.im>
parents: 8536
diff changeset
5164 conv->history = g_string_append(conv->history, buf);
b2e82ebc6cd9 [gaim-migrate @ 9301]
Kevin Stange <kstange@pidgin.im>
parents: 8536
diff changeset
5165 conv->history = g_string_append(conv->history, new_message);
b2e82ebc6cd9 [gaim-migrate @ 9301]
Kevin Stange <kstange@pidgin.im>
parents: 8536
diff changeset
5166 conv->history = g_string_append(conv->history, "<BR>\n");
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5167
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5168 g_free(with_font_tag);
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7446
diff changeset
5169 g_free(new_message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5170 }
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
5171
6062
a292fd631fdb [gaim-migrate @ 6512]
Mark Doliner <markdoliner@pidgin.im>
parents: 6057
diff changeset
5172
5012
a6e5bbd44d89 [gaim-migrate @ 5348]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4965
diff changeset
5173 if(sml_attrib)
a6e5bbd44d89 [gaim-migrate @ 5348]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4965
diff changeset
5174 g_free(sml_attrib);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5175 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5176
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5177 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5178 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5179 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5180 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5181 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5182 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5183 char tmp[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5184 int num_users;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5185
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5186 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5187 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5188 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5189
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5190 num_users = g_list_length(gaim_conv_chat_get_users(chat));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5191
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5192 g_snprintf(tmp, sizeof(tmp),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5193 ngettext("%d person in room", "%d people in room",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5194 num_users),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5195 num_users);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5196
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5197 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5198
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5199 if (gtkconv->make_sound)
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
5200 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5201
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5202 add_chat_buddy_common(conv, user);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5203 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5204
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5205 static void
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5206 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5207 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5208 GaimConvChat *chat;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5209 GaimGtkConversation *gtkconv;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5210 GaimGtkChatPane *gtkchat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5211 GList *l;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5212 char tmp[BUF_LONG];
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5213 int num_users;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5214
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5215 chat = GAIM_CONV_CHAT(conv);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5216 gtkconv = GAIM_GTK_CONVERSATION(conv);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5217 gtkchat = gtkconv->u.chat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5218
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5219 num_users = g_list_length(gaim_conv_chat_get_users(chat));
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5220
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5221 g_snprintf(tmp, sizeof(tmp),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5222 ngettext("%d person in room", "%d people in room",
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5223 num_users),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5224 num_users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5225
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5226 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5227
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5228 for (l = users; l != NULL; l = l->next) {
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5229 add_chat_buddy_common(conv, (char *)l->data);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5230 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5231 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5232
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5233 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5234 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name,
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5235 const char *new_name)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5236 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5237 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5238 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5239 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5240 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5241 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5242 int f = 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5243
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5244 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5245 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5246 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5247
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5248 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5249
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5250 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5251 return;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5252
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5253 while (f != 0) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5254 char *val;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5255
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5256 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &val, -1);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5257
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5258 if (!gaim_utf8_strcasecmp(old_name, val)) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5259 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5260 g_free(val);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5261 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5262 }
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5263
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5264 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5265
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5266 g_free(val);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5267 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5268
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5269 if (!gaim_conv_chat_find_user(chat, old_name))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5270 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5271
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5272 add_chat_buddy_common(conv, new_name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5273 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5274
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5275 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5276 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5277 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5278 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5279 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5280 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5281 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5282 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5283 char tmp[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5284 int num_users;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5285 int f = 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5286
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5287 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5288 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5289 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5290
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5291 num_users = g_list_length(gaim_conv_chat_get_users(chat)) - 1;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5292
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5293 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5294
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5295 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5296 return;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5297
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5298 while (f != 0) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5299 char *val;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5300
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5301 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &val, -1);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5302
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5303 if (!gaim_utf8_strcasecmp(user, val)) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5304 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5305 g_free(val);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5306 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5307 }
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5308
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5309 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5310
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5311 g_free(val);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5312 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5313
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5314 if (!gaim_conv_chat_find_user(chat, user))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5315 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5316
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5317 g_snprintf(tmp, sizeof(tmp),
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5318 ngettext("%d person in room", "%d people in room",
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5319 num_users), num_users);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5320
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5321 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5322
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5323 if (gtkconv->make_sound)
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
5324 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5325 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5326
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5327 static void
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5328 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5329 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5330 GaimConvChat *chat;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5331 GaimGtkConversation *gtkconv;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5332 GaimGtkChatPane *gtkchat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5333 GtkTreeIter iter;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5334 GtkTreeModel *model;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5335 GList *l;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5336 char tmp[BUF_LONG];
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5337 int num_users;
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
5338 gboolean f;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5339
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5340 chat = GAIM_CONV_CHAT(conv);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5341 gtkconv = GAIM_GTK_CONVERSATION(conv);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5342 gtkchat = gtkconv->u.chat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5343
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5344 num_users = g_list_length(gaim_conv_chat_get_users(chat)) -
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5345 g_list_length(users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5346
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5347 for (l = users; l != NULL; l = l->next) {
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5348 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5349
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5350 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model),
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5351 &iter))
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5352 continue;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5353
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5354 do {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5355 char *val;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5356
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5357 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter,
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5358 CHAT_USERS_NAME_COLUMN, &val, -1);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5359
9696
9d62e1ec5977 [gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9687
diff changeset
5360 if (!gaim_utf8_strcasecmp((char *)l->data, val)) {
9d62e1ec5977 [gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9687
diff changeset
5361 #if GTK_CHECK_VERSION(2,2,0)
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5362 f = gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
9696
9d62e1ec5977 [gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9687
diff changeset
5363 #else
9d62e1ec5977 [gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9687
diff changeset
5364 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
9d62e1ec5977 [gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9687
diff changeset
5365 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
9d62e1ec5977 [gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9687
diff changeset
5366 #endif
9d62e1ec5977 [gaim-migrate @ 10555]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9687
diff changeset
5367 }
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5368 else
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5369 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5370
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5371 g_free(val);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5372 } while (f);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5373 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5374
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5375 g_snprintf(tmp, sizeof(tmp),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5376 ngettext("%d person in room", "%d people in room",
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5377 num_users), num_users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5378
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5379 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5380 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5381
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5382 static void
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5383 gaim_gtkconv_chat_update_user(GaimConversation *conv, const char *user)
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5384 {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5385 GaimConvChat *chat;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5386 GaimGtkConversation *gtkconv;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5387 GaimGtkChatPane *gtkchat;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5388 GtkTreeIter iter;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5389 GtkTreeModel *model;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5390 int f = 1;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5391
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5392 chat = GAIM_CONV_CHAT(conv);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5393 gtkconv = GAIM_GTK_CONVERSATION(conv);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5394 gtkchat = gtkconv->u.chat;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5395
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5396 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5397
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5398 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5399 return;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5400
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5401 while (f != 0) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5402 char *val;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5403
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5404 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &val, -1);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5405
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5406 if (!gaim_utf8_strcasecmp(user, val)) {
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5407 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5408 g_free(val);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5409 break;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5410 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5411
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5412 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5413
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5414 g_free(val);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5415 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5416
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5417 if (!gaim_conv_chat_find_user(chat, user))
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5418 return;
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5419
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5420 add_chat_buddy_common(conv, user);
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5421 }
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5422
9260
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5423 static gboolean
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5424 gaim_gtkconv_has_focus(GaimConversation *conv)
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5425 {
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5426 GaimConvWindow *win;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5427 GaimGtkWindow *gtkwin;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5428 gboolean has_focus;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5429
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5430 win = gaim_conversation_get_window(conv);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5431 gtkwin = GAIM_GTK_WINDOW(win);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5432
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5433 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL);
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5434
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5435 return has_focus;
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5436 }
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5437
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5438 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5439 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5440 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5441 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5442 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5443 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5444 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5445 GaimConvChat *chat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5446
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5447 win = gaim_conversation_get_window(conv);
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5448 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5449 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5450
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5451 if (type == GAIM_CONV_UPDATE_ACCOUNT)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5452 {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5453 gaim_conversation_autoset_title(conv);
5881
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5454
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5455 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5456 gaim_gtkconv_update_buddy_icon(conv);
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5457
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5458 gaim_gtkconv_update_buttons_by_protocol(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5459
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
5460 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5461
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5462 smiley_themeize(gtkconv->imhtml);
6394
51957edc16c5 [gaim-migrate @ 6899]
Nathan Walp <nwalp@pidgin.im>
parents: 6392
diff changeset
5463
6395
61afe11ff70e [gaim-migrate @ 6900]
Nathan Walp <nwalp@pidgin.im>
parents: 6394
diff changeset
5464 update_tab_icon(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5465 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5466 else if (type == GAIM_CONV_UPDATE_TYPING ||
8155
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
5467 type == GAIM_CONV_UPDATE_UNSEEN ||
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
5468 type == GAIM_CONV_UPDATE_TITLE)
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5469 {
9472
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5470 char *title;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5471 GaimConvIm *im = NULL;
9472
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5472 GaimConnection *gc = gaim_conversation_get_gc(conv);
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5473 char color[8];
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5474
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5475 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5476 im = GAIM_CONV_IM(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5477
9472
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5478 if (!gc || ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5479 && gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv))))
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5480 title = g_strdup_printf("(%s)", gaim_conversation_get_title(conv));
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5481
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5482 else
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5483 title = g_strdup(gaim_conversation_get_title(conv));
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5484
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5485 *color = '\0';
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5486
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5487 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5488 gtk_widget_realize(gtkconv->tab_label);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5489
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5490 if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPING)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5491 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5492 strcpy(color, "#47A046");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5493 }
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5494 else if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPED)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5495 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5496 strcpy(color, "#D1940C");
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5497 }
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5498 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5499 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5500 strcpy(color, "#314E6C");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5501 }
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
5502 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT)
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
5503 {
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
5504 strcpy(color, "#DF421E");
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8237
diff changeset
5505 }
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5506 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5507 {
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5508 strcpy(color, "#868272");
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5509 }
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5510
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5511 if (*color != '\0')
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5512 {
8536
b546a87d7a2a [gaim-migrate @ 9275]
Daniel Atallah <datallah@pidgin.im>
parents: 8535
diff changeset
5513 char *html_title,*label;
b546a87d7a2a [gaim-migrate @ 9275]
Daniel Atallah <datallah@pidgin.im>
parents: 8535
diff changeset
5514
b546a87d7a2a [gaim-migrate @ 9275]
Daniel Atallah <datallah@pidgin.im>
parents: 8535
diff changeset
5515 html_title = gaim_escape_html(title);
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5516
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5517 label = g_strdup_printf("<span color=\"%s\">%s</span>",
8536
b546a87d7a2a [gaim-migrate @ 9275]
Daniel Atallah <datallah@pidgin.im>
parents: 8535
diff changeset
5518 color, html_title);
b546a87d7a2a [gaim-migrate @ 9275]
Daniel Atallah <datallah@pidgin.im>
parents: 8535
diff changeset
5519 g_free(html_title);
7995
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
5520 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label);
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
5521 g_free(label);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5522 }
7995
39b4ab99438f [gaim-migrate @ 8672]
Etan Reisner <deryni@pidgin.im>
parents: 7990
diff changeset
5523 else
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5524 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title);
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5525
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5526 if (conv == gaim_conv_window_get_active_conversation(win))
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5527 update_typing_icon(conv);
8155
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
5528
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
5529 if (type == GAIM_CONV_UPDATE_TITLE) {
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
5530 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title);
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
5531 if (conv == gaim_conv_window_get_active_conversation(win))
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
5532 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title);
b607279bc59b [gaim-migrate @ 8867]
Etan Reisner <deryni@pidgin.im>
parents: 8143
diff changeset
5533 }
9472
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5534
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5535 g_free(title);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5536 }
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5537 else if (type == GAIM_CONV_UPDATE_TOPIC)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5538 {
7154
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5539 const char *topic;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5540 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5541 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5542
7154
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5543 topic = gaim_conv_chat_get_topic(chat);
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5544
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5545 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text), topic ? topic : "");
7154
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5546 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text,
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5547 topic ? topic : "", NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5548 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5549 else if (type == GAIM_CONV_ACCOUNT_ONLINE ||
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5550 type == GAIM_CONV_ACCOUNT_OFFLINE)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5551 {
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
5552 gray_stuff_out(gaim_conv_window_get_active_conversation(win));
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
5553 generate_send_as_items(win, NULL);
8946
9dd17283a2ee [gaim-migrate @ 9718]
Mark Doliner <markdoliner@pidgin.im>
parents: 8944
diff changeset
5554 update_tab_icon(conv);
9472
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5555 gaim_conversation_autoset_title(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5556 }
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5557 else if (type == GAIM_CONV_UPDATE_AWAY)
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5558 {
8946
9dd17283a2ee [gaim-migrate @ 9718]
Mark Doliner <markdoliner@pidgin.im>
parents: 8944
diff changeset
5559 update_tab_icon(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5560 }
8256
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
5561 else if (type == GAIM_CONV_UPDATE_ADD || type == GAIM_CONV_UPDATE_REMOVE ||
3f3063796999 [gaim-migrate @ 8979]
Tim Ringenbach <marv@pidgin.im>
parents: 8253
diff changeset
5562 type == GAIM_CONV_UPDATE_CHATLEFT)
8001
cd8b227e2fc8 [gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents: 7996
diff changeset
5563 {
9472
6f678d378aee [gaim-migrate @ 10297]
Tim Ringenbach <marv@pidgin.im>
parents: 9471
diff changeset
5564 gaim_conversation_autoset_title(conv);
7929
bccfd0da825f [gaim-migrate @ 8600]
Mark Doliner <markdoliner@pidgin.im>
parents: 7928
diff changeset
5565 gray_stuff_out(conv);
4397
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
5566 }
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5567 else if (type == GAIM_CONV_UPDATE_ICON)
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5568 {
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5569 gaim_gtkconv_update_buddy_icon(conv);
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5570 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5571 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5572
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5573 static GaimConversationUiOps conversation_ui_ops =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5574 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5575 gaim_gtkconv_destroy, /* destroy_conversation */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5576 gaim_gtkconv_write_chat, /* write_chat */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5577 gaim_gtkconv_write_im, /* write_im */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5578 gaim_gtkconv_write_conv, /* write_conv */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5579 gaim_gtkconv_chat_add_user, /* chat_add_user */
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5580 gaim_gtkconv_chat_add_users, /* chat_add_users */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5581 gaim_gtkconv_chat_rename_user, /* chat_rename_user */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5582 gaim_gtkconv_chat_remove_user, /* chat_remove_user */
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5583 gaim_gtkconv_chat_remove_users, /* chat_remove_users */
9554
1609ba3612c3 [gaim-migrate @ 10387]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9533
diff changeset
5584 gaim_gtkconv_chat_update_user, /* chat_update_user */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5585 NULL, /* update_progress */
9260
82d7b380220a [gaim-migrate @ 10059]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9247
diff changeset
5586 gaim_gtkconv_has_focus, /* has_focus */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5587 gaim_gtkconv_updated /* updated */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5588 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5589
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5590 GaimConversationUiOps *
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
5591 gaim_gtk_conversations_get_conv_ui_ops(void)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5592 {
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
5593 return &conversation_ui_ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5594 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5595
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5596 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5597 * Public conversation utility functions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5598 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5599 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5600 gaim_gtkconv_update_buddy_icon(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5601 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5602 GaimGtkConversation *gtkconv;
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5603 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5604
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5605 char filename[256];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5606 FILE *file;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5607 GError *err = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5608
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5609 const void *data;
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5610 size_t len;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5611
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5612 GdkPixbuf *buf;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5613
8821
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5614 GtkWidget *vbox;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5615 GtkWidget *event;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5616 GtkWidget *frame;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5617 GdkPixbuf *scale;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5618 GdkPixmap *pm;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5619 GdkBitmap *bm;
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5620 int scale_width, scale_height;
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5621 GtkRequisition requisition;
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5622
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5623 GaimAccount *account;
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5624 GaimPluginProtocolInfo *prpl_info = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5625
8821
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5626 GaimButtonStyle button_type;
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5627
9324
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5628 GaimBuddyIcon *icon;
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5629
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5630 g_return_if_fail(conv != NULL);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5631 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv));
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5632 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5633
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5634 gtkconv = GAIM_GTK_CONVERSATION(conv);
9687
489b6b200876 [gaim-migrate @ 10539]
Sean Egan <seanegan@pidgin.im>
parents: 9683
diff changeset
5635
489b6b200876 [gaim-migrate @ 10539]
Sean Egan <seanegan@pidgin.im>
parents: 9683
diff changeset
5636 if (!gtkconv->u.im->show_icon)
489b6b200876 [gaim-migrate @ 10539]
Sean Egan <seanegan@pidgin.im>
parents: 9683
diff changeset
5637 return;
489b6b200876 [gaim-migrate @ 10539]
Sean Egan <seanegan@pidgin.im>
parents: 9683
diff changeset
5638
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5639 account = gaim_conversation_get_account(conv);
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5640 if(account && account->gc)
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5641 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5642
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5643 remove_icon(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5644
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5645 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5646 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5647
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5648 if (gaim_conversation_get_gc(conv) == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5649 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5650
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5651 if (gtkconv->u.im->anim)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5652 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5653
9324
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5654
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5655
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5656 icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5657
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5658 if (icon == NULL)
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5659 return;
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5660
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5661 data = gaim_buddy_icon_get_data(icon, &len);
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5662
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5663 /* this is such an evil hack, i don't know why i'm even considering it.
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5664 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5665 /* gdk-pixbuf-loader was leaky? is it still? */
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5666 g_snprintf(filename, sizeof(filename),
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5667 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d",
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5668 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid());
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5669
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5670 if (!(file = fopen(filename, "wb")))
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5671 return;
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5672
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5673 fwrite(data, 1, len, file);
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5674 fclose(file);
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5675
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5676 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err);
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5677 /* make sure we remove the file as soon as possible */
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5678 unlink(filename);
dfa7e7d6fb06 [gaim-migrate @ 10132]
Tim Ringenbach <marv@pidgin.im>
parents: 9319
diff changeset
5679
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5680
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5681 if (err) {
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5682 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv",
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5683 "Buddy icon error: %s\n", err->message);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5684 g_error_free(err);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5685 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5686
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5687 if (!gtkconv->u.im->anim)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5688 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5689
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5690 if(gtkconv->u.im->iter)
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5691 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5692
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5693 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5694 gtkconv->u.im->iter = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5695 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5696 } else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5697 gtkconv->u.im->iter =
8496
1934aeba5a77 [gaim-migrate @ 9231]
Mark Doliner <markdoliner@pidgin.im>
parents: 8481
diff changeset
5698 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); /* LEAK */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5699 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5700 if (gtkconv->u.im->animate)
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
5701 start_anim(NULL, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5702 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5703
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5704 get_icon_scale_size(gtkconv->u.im->anim, prpl_info ? &prpl_info->icon_spec :
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5705 NULL, &scale_width, &scale_height);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5706 scale = gdk_pixbuf_scale_simple(buf,
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5707 MAX(gdk_pixbuf_get_width(buf) * scale_width /
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5708 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5709 MAX(gdk_pixbuf_get_height(buf) * scale_height /
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5710 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5711 GDK_INTERP_NEAREST);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5712
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5713 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5714 g_object_unref(G_OBJECT(scale));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5715
8821
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5716
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5717 vbox = gtk_vbox_new(FALSE, 0);
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5718
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5719 frame = gtk_frame_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5720 gtk_frame_set_shadow_type(GTK_FRAME(frame),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5721 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN));
8821
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5722 gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
35d8d7218b93 [gaim-migrate @ 9583]
Nathan Walp <nwalp@pidgin.im>
parents: 8811
diff changeset
5723
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5724 event = gtk_event_box_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5725 gtk_container_add(GTK_CONTAINER(frame), event);
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
5726 g_signal_connect(G_OBJECT(event), "button-press-event",
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5727 G_CALLBACK(icon_menu), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5728 gtk_widget_show(event);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5729
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5730 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm);
9318
9d1c6820a588 [gaim-migrate @ 10126]
Nathan Walp <nwalp@pidgin.im>
parents: 9317
diff changeset
5731 gtk_widget_set_size_request(gtkconv->u.im->icon, scale_width, scale_height);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5732 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5733 gtk_widget_show(gtkconv->u.im->icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5734
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5735 g_object_unref(G_OBJECT(pm));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5736
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5737 if (bm)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5738 g_object_unref(G_OBJECT(bm));
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5739
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5740 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/button_type");
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5741 gtk_widget_size_request(gtkconv->bbox, &requisition);
9683
dca3f5c4660a [gaim-migrate @ 10535]
Mark Doliner <markdoliner@pidgin.im>
parents: 9673
diff changeset
5742 if (button_type == GAIM_BUTTON_NONE || requisition.height * 1.5 < scale_height) {
9332
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5743 gtk_box_pack_start(GTK_BOX(gtkconv->lower_hbox), vbox, FALSE, FALSE, 0);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5744 /* gtk_box_reorder_child(GTK_BOX(gtkconv->lower_hbox), vbox, 0); */
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5745 } else {
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5746 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), vbox, FALSE, FALSE, 0);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5747 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), vbox, 0);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5748 }
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5749
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5750 gtk_widget_show(vbox);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5751 gtk_widget_show(frame);
9452c2623bd5 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9324
diff changeset
5752
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5753 /* The buddy icon code needs badly to be fixed. */
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5754 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
8068
6db4473a2d1a [gaim-migrate @ 8766]
Gary Kramlich <grim@pidgin.im>
parents: 8061
diff changeset
5755 if(conv == gaim_conv_window_get_active_conversation(gaim_conversation_get_window(conv)))
6db4473a2d1a [gaim-migrate @ 8766]
Gary Kramlich <grim@pidgin.im>
parents: 8061
diff changeset
5756 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5757 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5758
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5759 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5760 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5761 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5762 GaimConvWindow *win;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5763
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5764 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5765 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5766
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
5767 win = gaim_conversation_get_window(conv);
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
5768
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
5769 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv)
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
5770 gray_stuff_out(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5771 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5772
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5773 GaimConvWindow *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5774 gaim_gtkwin_get_at_xy(int x, int y)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5775 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5776 GaimConvWindow *win = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5777 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5778 GdkWindow *gdkwin;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5779 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5780
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5781 gdkwin = gdk_window_at_pointer(&x, &y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5782
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5783 if (gdkwin)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5784 gdkwin = gdk_window_get_toplevel(gdkwin);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5785
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5786 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5787 win = (GaimConvWindow *)l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5788
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5789 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5790 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5791
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5792 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5793
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5794 if (gdkwin == gtkwin->window->window)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5795 return win;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5796 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5797
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5798 return NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5799 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5800
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5801 int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5802 gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5803 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5804 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5805 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5806 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5807 GtkNotebook *notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5808 GtkWidget *tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5809 gint i, page_num = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5810 gboolean first_visible = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5811
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5812 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5813 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5814
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5815 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5816 notebook = GTK_NOTEBOOK(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5817
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5818 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5819 x_rel = x - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5820 y_rel = y - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5821
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5822 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5823 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5824 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5825
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5826 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5827 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5828
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5829 if (!GTK_WIDGET_MAPPED(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5830 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5831
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5832 if (first_visible) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5833 first_visible = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5834
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5835 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5836 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5837 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5838
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5839 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5840 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5841
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5842 if (tab->allocation.x <= x_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5843 if (tab->allocation.x + tab->allocation.width <= x_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5844 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5845 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5846 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5847 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5848 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5849 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5850 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5851 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5852 if (tab->allocation.y <= y_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5853 if (tab->allocation.y + tab->allocation.height <= y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5854 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5855 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5856 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5857 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5858 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5859 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5860 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5861 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5862
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5863 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5864 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5865
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5866 return page_num;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5867 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5868
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5869 int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5870 gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5871 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5872 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5873 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5874 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5875 GtkNotebook *notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5876 GtkWidget *tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5877 gint i, page_num = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5878
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5879 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5880 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5881
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5882 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5883 notebook = GTK_NOTEBOOK(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5884
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5885 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5886 x_rel = x - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5887 y_rel = y - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5888
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5889 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5890 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5891 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5892
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5893 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5894 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5895
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5896 if (!GTK_WIDGET_MAPPED(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5897 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5898
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5899 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5900 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5901
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5902 if (tab->allocation.x <= x_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5903 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5904 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5905 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5906 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5907 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5908 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5909 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5910 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5911 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5912 if (tab->allocation.y <= y_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5913 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5914 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5915 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5916 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5917 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5918 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5919 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5920 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5921 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5922
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5923 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5924 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5925
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5926 return page_num;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5927 }
4940
6f9acbfc8a3d [gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents: 4939
diff changeset
5928
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5929 static void
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5930 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value,
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5931 gpointer data)
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5932 {
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5933 if (value)
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5934 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5935 GDK_Escape, 0, TRUE);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5936 else
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5937 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5938 GDK_W, GDK_CONTROL_MASK, TRUE);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5939 }
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5940
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5941 static void
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5942 close_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value,
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5943 gpointer data)
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5944 {
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5945 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5946 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5947 GaimGtkConversation *gtkconv;
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5948
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5949 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5950 conv = (GaimConversation *)l->data;
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5951
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5952 if (!GAIM_IS_GTK_CONVERSATION(conv))
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5953 continue;
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5954
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5955 gtkconv = GAIM_GTK_CONVERSATION(conv);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5956
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5957 if (value)
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5958 gtk_widget_show(gtkconv->close);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5959 else
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5960 gtk_widget_hide(gtkconv->close);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5961 }
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5962 }
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5963
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5964 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5965 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5966 gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5967 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5968 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5969 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5970 GaimGtkConversation *gtkconv;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5971
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5972 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5973 conv = (GaimConversation *)l->data;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5974
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5975 if (!GAIM_IS_GTK_CONVERSATION(conv))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5976 continue;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5977
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5978 gtkconv = GAIM_GTK_CONVERSATION(conv);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5979
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5980 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value));
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5981 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5982 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5983
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5984 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5985 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5986 gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5987 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5988 #ifdef USE_GTKSPELL
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5989 GList *cl;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5990 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5991 GaimGtkConversation *gtkconv;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5992 GtkSpell *spell;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5993
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5994 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5995
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5996 conv = (GaimConversation *)cl->data;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5997
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5998 if (!GAIM_IS_GTK_CONVERSATION(conv))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5999 continue;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6000
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6001 gtkconv = GAIM_GTK_CONVERSATION(conv);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6002
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6003 if (value)
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
6004 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6005 else {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6006 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry));
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6007 gtkspell_detach(spell);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6008 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6009 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6010 #endif
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6011 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6012
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6013 static void
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6014 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6015 gpointer data)
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6016 {
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6017 GList *l;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6018 GtkPositionType pos;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
6019 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6020 GaimGtkWindow *gtkwin;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6021
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6022 pos = GPOINTER_TO_INT(value);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6023
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6024 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
6025 win = (GaimConvWindow *)l->data;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6026
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6027 if (!GAIM_IS_GTK_WINDOW(win))
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6028 continue;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6029
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6030 gtkwin = GAIM_GTK_WINDOW(win);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6031
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6032 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6033 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6034 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6035
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6036 static void
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6037 html_shortcuts_pref_cb(const char *name, GaimPrefType type,
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6038 gpointer value, gpointer data)
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6039 {
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6040 GList *l;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6041 GaimConversation *conv;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6042 GaimGtkConversation *gtkconv;
9487
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6043
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6044 for(l = gaim_get_conversations(); l != NULL; l = l->next) {
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6045 conv = (GaimConversation *)l->data;
9487
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6046
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6047 if(!GAIM_IS_GTK_CONVERSATION(conv))
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6048 continue;
9487
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6049
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6050 gtkconv = GAIM_GTK_CONVERSATION(conv);
9487
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6051
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6052 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry),
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6053 (gboolean)GPOINTER_TO_INT(value));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6054 }
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6055 }
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6056
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6057 static void
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6058 smiley_shortcuts_pref_cb(const char *name, GaimPrefType type,
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6059 gpointer value, gpointer data)
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6060 {
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6061 GList *l;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6062 GaimConversation *conv;
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6063 GaimGtkConversation *gtkconv;
9487
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6064
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6065 for(l = gaim_get_conversations(); l != NULL; l = l->next) {
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6066 conv = (GaimConversation *)l->data;
9487
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6067
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6068 if(!GAIM_IS_GTK_CONVERSATION(conv))
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6069 continue;
9487
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6070
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6071 gtkconv = GAIM_GTK_CONVERSATION(conv);
9487
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6072
30b821f23d2c [gaim-migrate @ 10312]
Luke Schierer <lschiere@pidgin.im>
parents: 9474
diff changeset
6073 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry),
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6074 (gboolean)GPOINTER_TO_INT(value));
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6075 }
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6076 }
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6077
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6078 static void
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6079 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type,
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6080 gpointer value, gpointer data)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6081 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6082 GList *l;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6083 GaimConversation *conv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6084 GaimGtkConversation *gtkconv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6085 GaimConvWindow *win;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6086 GaimGtkWindow *gtkwin;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6087
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6088 for (l = gaim_get_conversations(); l != NULL; l = l->next)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6089 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6090 conv = (GaimConversation *)l->data;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6091
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6092 if (!GAIM_IS_GTK_CONVERSATION(conv))
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6093 continue;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6094
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6095 gtkconv = GAIM_GTK_CONVERSATION(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6096 win = gaim_conversation_get_window(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6097 gtkwin = GAIM_GTK_WINDOW(win);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6098
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
6099 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6100 gtk_check_menu_item_set_active(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6101 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6102 gtkconv->show_formatting_toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6103
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6104 if (gtkconv->show_formatting_toolbar)
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
6105 gtk_widget_show(gtkconv->toolbar);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6106 else
8317
fd4cf67705df [gaim-migrate @ 9041]
Sean Egan <seanegan@pidgin.im>
parents: 8290
diff changeset
6107 gtk_widget_hide(gtkconv->toolbar);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6108 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6109 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6110
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6111 static void
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6112 button_type_pref_cb(const char *name, GaimPrefType type,
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6113 gpointer value, gpointer data)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6114 {
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6115 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6116 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6117 GaimGtkConversation *gtkconv;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6118
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6119 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6120 conv = (GaimConversation *)l->data;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6121 gtkconv = GAIM_GTK_CONVERSATION(conv);
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6122 switch (conv->type) {
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6123 case GAIM_CONV_IM:
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
6124 setup_im_buttons(conv, gtkconv->bbox);
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6125 gaim_gtkconv_update_buddy_icon(conv);
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6126 break;
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6127 case GAIM_CONV_CHAT:
9749
d4492dc96fa0 [gaim-migrate @ 10616]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
6128 setup_chat_buttons(conv, gtkconv->bbox);
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6129 break;
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6130 default:
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6131 break;
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6132 }
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6133 }
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6134 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6135
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6136 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6137 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6138 gpointer value, gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6139 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6140 GList *l;
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6141 GaimConversation *conv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6142 GaimGtkConversation *gtkconv;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6143 GaimConvWindow *win;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6144
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6145 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6146 return;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6147
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6148 /* Set the "animate" flag for each icon based on the new preference */
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6149 for (l = gaim_get_ims(); l != NULL; l = l->next) {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6150 conv = (GaimConversation *)l->data;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6151 gtkconv = GAIM_GTK_CONVERSATION(conv);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6152 gtkconv->u.im->animate = (gboolean)value;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6153 }
8189
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6154
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6155 /* Now either stop or start animation for the active conversation in each window */
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6156 for (l = gaim_get_windows(); l != NULL; l = l->next) {
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6157 win = (GaimConvWindow *)l->data;
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6158 conv = gaim_conv_window_get_active_conversation(win);
dedf9efe2a1e [gaim-migrate @ 8910]
MBG <chromakode@gmail.com>
parents: 8177
diff changeset
6159 gaim_gtkconv_update_buddy_icon(conv);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6160 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6161 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6162
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6163 static void
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6164 show_buddy_icons_pref_cb(const char *name, GaimPrefType type, gpointer value,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6165 gpointer data)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6166 {
5881
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6167 GList *l;
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6168
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6169 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6170 GaimConversation *conv = l->data;
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6171
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6172 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6173 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon);
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6174 }
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6175 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6176
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5680
diff changeset
6177 static void
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6178 conv_placement_pref_cb(const char *name, GaimPrefType type,
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6179 gpointer value, gpointer data)
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6180 {
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6181 GaimConvPlacementFunc func;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6182
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6183 if (strcmp(name, "/gaim/gtk/conversations/placement"))
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6184 return;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6185
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6186 func = gaim_conv_placement_get_fnc(value);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6187
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6188 if (func == NULL)
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6189 return;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6190
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6191 gaim_conv_placement_set_current_func(func);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6192 }
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6193
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6194 void *
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6195 gaim_gtk_conversations_get_handle(void)
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6196 {
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6197 static int handle;
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6198
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6199 return &handle;
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6200 }
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6201
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6202 void
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
6203 gaim_gtk_conversations_init(void)
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6204 {
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6205 void *handle = gaim_gtk_conversations_get_handle();
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6206
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6207 /* Conversations */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6208 gaim_prefs_add_none("/gaim/gtk/conversations");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6209 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6210 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6211 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6212 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE);
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
6213 gaim_prefs_add_bool("/gaim/gtk/conversations/send_formatting", FALSE);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6214 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6215 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6216 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6217 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6218 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE);
9049
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
6219 #if 1
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
6220 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE);
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
6221 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE);
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
6222 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE);
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
6223 #else
8944
9c5815ecd85d [gaim-migrate @ 9716]
Mark Doliner <markdoliner@pidgin.im>
parents: 8941
diff changeset
6224 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_formatting", FALSE);
9049
fa66a5200d34 [gaim-migrate @ 9825]
Mark Doliner <markdoliner@pidgin.im>
parents: 9048
diff changeset
6225 #endif
9572
a9bbebfc279e [gaim-migrate @ 10415]
Mark Doliner <markdoliner@pidgin.im>
parents: 9554
diff changeset
6226 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", TRUE);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6227 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6228 gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE);
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
6229 gaim_prefs_add_bool("/gaim/gtk/conversations/enable_commands", TRUE);
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9123
diff changeset
6230
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6231 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last");
8998
e18e340f1111 [gaim-migrate @ 9773]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8974
diff changeset
6232 gaim_prefs_add_int("/gaim/gtk/conversations/placement_number", 1);
9025
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
6233 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "");
e49a72896270 [gaim-migrate @ 9801]
Luke Schierer <lschiere@pidgin.im>
parents: 9005
diff changeset
6234 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "");
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6235 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", "");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6236 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6237 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6238 gaim_prefs_add_int("/gaim/gtk/conversations/tab_side", GTK_POS_TOP);
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6239 gaim_prefs_add_int("/gaim/gtk/conversations/button_type",
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6240 GAIM_BUTTON_TEXT_IMAGE);
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6241
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6242
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6243 /* Conversations -> Chat */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6244 gaim_prefs_add_none("/gaim/gtk/conversations/chat");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6245 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6246 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6247 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6248 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50);
9319
364efc401b80 [gaim-migrate @ 10127]
Nathan Walp <nwalp@pidgin.im>
parents: 9318
diff changeset
6249 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/raise_on_events", FALSE);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6250
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6251 /* Conversations -> IM */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6252 gaim_prefs_add_none("/gaim/gtk/conversations/im");
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6253
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6254 gaim_prefs_add_bool("/gaim/gtk/conversations/im/animate_buddy_icons", TRUE);
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6255
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6256 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6257 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6258 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50);
9319
364efc401b80 [gaim-migrate @ 10127]
Nathan Walp <nwalp@pidgin.im>
parents: 9318
diff changeset
6259 gaim_prefs_add_bool("/gaim/gtk/conversations/im/raise_on_events", FALSE);
364efc401b80 [gaim-migrate @ 10127]
Nathan Walp <nwalp@pidgin.im>
parents: 9318
diff changeset
6260 gaim_prefs_add_bool("/gaim/gtk/conversations/im/show_buddy_icons", TRUE);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6261
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6262 /* Connect callbacks. */
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
6263 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes",
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
6264 escape_closes_pref_cb, NULL);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6265 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs",
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6266 close_on_tabs_pref_cb, NULL);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6267 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6268 show_timestamps_pref_cb, NULL);
8456
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6269 gaim_prefs_connect_callback("/gaim/gtk/conversations/html_shortcuts",
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6270 html_shortcuts_pref_cb, NULL);
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6271 gaim_prefs_connect_callback("/gaim/gtk/conversations/smiley_shortcuts",
63fcac86a8fd [gaim-migrate @ 9186]
Gary Kramlich <grim@pidgin.im>
parents: 8448
diff changeset
6272 smiley_shortcuts_pref_cb, NULL);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6273 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar",
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6274 show_formatting_toolbar_pref_cb, NULL);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6275 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6276 spellcheck_pref_cb, NULL);
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6277 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6278 tab_side_pref_cb, NULL);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6279
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6280 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement",
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6281 conv_placement_pref_cb, NULL);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6282 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement");
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6283
9150
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6284 gaim_prefs_connect_callback("/gaim/gtk/conversations/button_type",
9c3bbd7d704c [gaim-migrate @ 9934]
Luke Schierer <lschiere@pidgin.im>
parents: 9131
diff changeset
6285 button_type_pref_cb, NULL);
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
6286
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6287 /* IM callbacks */
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6288 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6289 animate_buddy_icons_pref_cb, NULL);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6290 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6291 show_buddy_icons_pref_cb, NULL);
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6292
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6293
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6294 /**********************************************************************
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6295 * Register signals
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6296 **********************************************************************/
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6297 gaim_signal_register(handle, "conversation-drag-ended",
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6298 gaim_marshal_VOID__POINTER_POINTER, NULL, 2,
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6299 gaim_value_new(GAIM_TYPE_SUBTYPE,
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6300 GAIM_SUBTYPE_CONV_WINDOW),
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6301 gaim_value_new(GAIM_TYPE_SUBTYPE,
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6302 GAIM_SUBTYPE_CONV_WINDOW));
9167
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
6303
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
6304 /**********************************************************************
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
6305 * Register commands
d7bd0826f298 [gaim-migrate @ 9952]
Tim Ringenbach <marv@pidgin.im>
parents: 9150
diff changeset
6306 **********************************************************************/
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6307 gaim_cmd_register("me", "S", GAIM_CMD_P_DEFAULT,
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6308 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM, NULL,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
6309 me_command_cb, _("me &lt;action&gt;: Send an IRC style action to a buddy or chat."), NULL);
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6310 gaim_cmd_register("debug", "w", GAIM_CMD_P_DEFAULT,
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6311 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM, NULL,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
6312 debug_command_cb, _("debug &lt;option&gt;: Send various debug information to the current conversation."), NULL);
9213
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6313
d874fd5f996f [gaim-migrate @ 10008]
Tim Ringenbach <marv@pidgin.im>
parents: 9212
diff changeset
6314 gaim_cmd_register("help", "w", GAIM_CMD_P_DEFAULT,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
6315 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_ALLOW_WRONG_ARGS, NULL,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9596
diff changeset
6316 help_command_cb, _("help &lt;command&gt;: Help on a specific command."), NULL);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6317 }
8582
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6318
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6319 void
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6320 gaim_gtk_conversations_uninit(void)
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6321 {
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6322 gaim_signals_unregister_by_instance(gaim_gtk_conversations_get_handle());
7d573742efc5 [gaim-migrate @ 9332]
Etan Reisner <deryni@pidgin.im>
parents: 8573
diff changeset
6323 }

mercurial