src/gtkconv.c

Tue, 02 Dec 2003 07:33:42 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Tue, 02 Dec 2003 07:33:42 +0000
changeset 7694
4694af95b1c6
parent 7693
1f736efbd12d
child 7695
1c2cc9da21bd
permissions
-rw-r--r--

[gaim-migrate @ 8339]
Committing this now so that I don't accidentally destroy it again.

We're going WYSIWYG, folks. This is the beginning of it. Don't bother
trying to tell me what doesn't work yet. This is just a sneak-peek.
Bold, Italics, and Underline work fairly well. The toggle buttons in the
tooltips won't necessarily be accurate yet, and things will get screwed up
if you say, start typing, make something bold, then go back to before where
you started typing and type there. It'll all be fixed eventually.

NOTE: I am not liable for any sexual arousal caused by using this code

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 *
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
5 * Copyright (C) 2002-2003 Christian Hammond <chipx86@gnupdate.org>
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
6 *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 * 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
9 * the Free Software Foundation; either version 2 of the License, or
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * (at your option) any later version.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * GNU General Public License for more details.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
22 #include "gtkinternal.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
23
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 #ifndef _WIN32
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
25 # include <X11/Xlib.h>
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
26 #endif
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
27
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 #ifdef USE_GTKSPELL
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
29 # include <gtkspell/gtkspell.h>
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
30 # ifdef _WIN32
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
31 # include "wspell.h"
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
32 # endif
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33 #endif
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
34
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 #include <gdk/gdkkeysyms.h>
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
36 #include <locale.h>
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
37
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
38 #include "debug.h"
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
39 #include "imgstore.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
40 #include "log.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
41 #include "multi.h"
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
42 #include "notify.h"
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
43 #include "prefs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
44 #include "prpl.h"
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
45 #include "request.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
46 #include "sound.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
47 #include "util.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
48
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
49 #include "dnd-hints.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
50 #include "gtkblist.h"
5717
2f3a377de638 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
51 #include "gtkconv.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
52 #include "gtkimhtml.h"
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
53 #include "gtklog.h"
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
54 #include "gtkpounce.h"
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
55 #include "gtkprivacy.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
56 #include "gtkutils.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
57 #include "stock.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
58
5717
2f3a377de638 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
59 #include "ui.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
60
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
61 /* XXX */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
62 #include "gaim.h"
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
63
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
64 #define AUTO_RESPONSE "&lt;AUTO-REPLY&gt; : "
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
65
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66 static char nick_colors[][8] = {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
67 "#ba55d3", /* Medium Orchid */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
68 "#ee82ee", /* Violet */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69 "#c715b4", /* Medium Violet Red */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70 "#ff69b4", /* Hot Pink */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71 "#ff6347", /* Tomato */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 "#fa8c00", /* Dark Orange */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 "#fa8072", /* Salmon */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 "#b22222", /* Fire Brick */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 "#f4a460", /* Sandy Brown */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76 "#cd5c5c", /* Indian Red */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77 "#bc8f8f", /* Rosy Brown */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 "#f0e68c", /* Khaki */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 "#bdb76b", /* Dark Khaki */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 "#228b22", /* Forest Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 "#9acd32", /* Yellow Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 "#32cd32", /* Lime Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 "#3cb371", /* Medium Sea Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 "#2e8b57", /* Sea Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 "#8fbc8f", /* Dark Sea Green */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 "#66cdaa", /* Medium Aquamarine */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 "#5f9ea0", /* Cadet Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88 "#48d1cc", /* Medium Turquoise */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89 "#00ced1", /* Dark Turquoise */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90 "#4682b4", /* Stell Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91 "#00bfff", /* Deep Sky Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 "#1690ff", /* Dodger Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 "#4169ff", /* Royal Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 "#6a5acd", /* Slate Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 "#6495ed", /* Cornflower Blue */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 "#708090", /* Slate gray */
6291
ac476ede1f3a [gaim-migrate @ 6790]
Luke Schierer <lschiere@pidgin.im>
parents: 6244
diff changeset
97 "#2f4f4f", /* Dark Slate Gray */
ac476ede1f3a [gaim-migrate @ 6790]
Luke Schierer <lschiere@pidgin.im>
parents: 6244
diff changeset
98 "#ff8c00", /* Dark Orange */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 };
6291
ac476ede1f3a [gaim-migrate @ 6790]
Luke Schierer <lschiere@pidgin.im>
parents: 6244
diff changeset
100
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
103 #define SCALE(x) \
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104 ((gdk_pixbuf_animation_get_width(x) <= 48 && \
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
105 gdk_pixbuf_animation_get_height(x) <= 48) ? 48 : 50)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
106
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
107 typedef struct
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109 GtkWidget *window;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111 GtkWidget *entry;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 GtkWidget *message;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
114 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
115
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
116 } InviteBuddyInfo;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118 static GtkWidget *invite_dialog = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
119
7694
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
120 enum {
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
121 TARGET_XURL=0,
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
122 TARGET_URI_LIST,
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
123 TARGET_BLIST_NODE,
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
124 TARGET_STRING,
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
125 TARGET_NETSCAPE_URL,
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
126 TARGET_PLAIN_TEXT
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
127 };
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
128
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
129 /* Prototypes. <-- because Paco-Paco hates this comment. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130 static void check_everything(GtkTextBuffer *buffer);
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
131 static void set_toggle(GtkWidget *tb, gboolean active);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
132 static void move_next_tab(GaimConversation *conv);
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
133 static void do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv);
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
134 static void do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv);
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
135 static void do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv);
7242
d91a60e1095c [gaim-migrate @ 7817]
Herman Bloggs <herman@bluedigits.com>
parents: 7222
diff changeset
136 static void do_small(GtkWidget *smalltb, GaimGtkConversation *gtkconv);
d91a60e1095c [gaim-migrate @ 7817]
Herman Bloggs <herman@bluedigits.com>
parents: 7222
diff changeset
137 static void do_normal(GtkWidget *normal, GaimGtkConversation *gtkconv);
d91a60e1095c [gaim-migrate @ 7817]
Herman Bloggs <herman@bluedigits.com>
parents: 7222
diff changeset
138 static void do_big(GtkWidget *large, GaimGtkConversation *gtkconv);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
139 static void toggle_font(GtkWidget *font, GaimConversation *conv);
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
140 static void toggle_fg_color(GtkWidget *color, GaimConversation *conv);
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
141 static void toggle_bg_color(GtkWidget *color, GaimConversation *conv);
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
142 static void got_typing_keypress(GaimConversation *conv, gboolean first);
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
143 static GList *generate_invite_user_names(GaimConnection *gc);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
144 static void add_chat_buddy_common(GaimConversation *conv,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
145 const char *name, int pos);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
146 static void tab_complete(GaimConversation *conv);
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
147 static void update_typing_icon(GaimConversation *conv);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
148 static gboolean update_send_as_selection(GaimConvWindow *win);
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
149 static char *item_factory_translate_func (const char *path, gpointer func_data);
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
150 static void save_convo(GtkWidget *save, GaimConversation *c);
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
151 static void update_tab_icon(GaimConversation *conv);
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 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
154 * Callbacks
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
155 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
156 static void
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
157 do_save_convo(GtkWidget *wid)
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
158 {
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6038
diff changeset
159 GaimConversation *c = g_object_get_data(G_OBJECT(GTK_FILE_SELECTION(wid)->ok_button),
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
160 "gaim_conversation");
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
161 const char *filename;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
162 FILE *fp;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
163
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
164 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
165
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
166 if (!((gaim_conversation_get_type(c) != GAIM_CONV_CHAT &&
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
167 g_list_find(gaim_get_ims(), c)) ||
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
168 (gaim_conversation_get_type(c) == GAIM_CONV_CHAT &&
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
169 g_list_find(gaim_get_chats(), c))))
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
170 filename = NULL;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
171
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
172 gtk_widget_destroy(wid);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
173
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
174 if (filename == NULL)
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
175 return;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
176
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
177 if ((fp = fopen(filename, "w+")) == NULL)
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
178 return;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
179
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
180 fprintf(fp, "%s", c->history->str);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
181
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
182 fclose(fp);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
183 }
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
184
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
185 static void
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
186 do_check_save_convo(GObject *obj, GtkWidget *wid)
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
187 {
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
188 const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
189
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
190 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid)))
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
191 return;
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
192
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
193 if(g_file_test(filename, G_FILE_TEST_EXISTS)){
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
194 gaim_request_yes_no(NULL, NULL, _("That file already exists"),
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
195 _("Would you like to overwrite it?"), 1, wid,
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
196 G_CALLBACK(do_save_convo), NULL);
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
197 }
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
198 else
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
199 do_save_convo(wid);
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
200 }
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6460
diff changeset
201
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
202 static void
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
203 do_insert_image_cb(GObject *obj, GtkWidget *wid)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
205 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
206 GaimGtkConversation *gtkconv;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
207 GaimConvIm *im;
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
208 char *name, *filename;
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
209 char *buf, *data;
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
210 size_t size;
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
211 GError *error;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
212 int id;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
213
5106
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
214 conv = g_object_get_data(G_OBJECT(wid), "user_data");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
215 gtkconv = GAIM_GTK_CONVERSATION(conv);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
216 im = GAIM_CONV_IM(conv);
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
217 name = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)));
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
218
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
219 if (!name) {
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
220 gtk_widget_destroy(gtkconv->dialogs.image);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
221 gtkconv->dialogs.image = NULL;
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
222 return;
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
223 }
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
224
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
225 if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(wid))) {
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
226 g_free(name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
227 return;
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
228 }
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
229
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
230 gtk_widget_destroy(gtkconv->dialogs.image);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
231 gtkconv->dialogs.image = NULL;
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
232
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
233 if (!g_file_get_contents(name, &data, &size, &error)) {
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
234 gaim_notify_error(NULL, NULL, error->message, NULL);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
235
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
236 g_error_free(error);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
237 g_free(name);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
238
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
239 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
240 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
241
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
242 filename = name;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
243 while (strchr(filename, '/'))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
244 filename = strchr(filename, '/') + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
245
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
246 id = gaim_imgstore_add(data, size, filename);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
247 g_free(data);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
248
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
249 if (!id) {
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
250 buf = g_strdup_printf(_("Failed to store image: %s\n"), name);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
251 gaim_notify_error(NULL, NULL, buf, NULL);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
252
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
253 g_free(buf);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
254 g_free(name);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
255
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
256 return;
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
257 }
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
258
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
259 im->images = g_slist_append(im->images, GINT_TO_POINTER(id));
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
260
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
261 buf = g_strdup_printf("<IMG ID=\"%d\" SRC=\"file://%s\">", id, filename);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
262 gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(gtkconv->entry_buffer), buf, -1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
263 g_free(buf);
5046
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
264
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
265 g_free(name);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
266
5046
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
267 set_toggle(gtkconv->toolbar.image, FALSE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
268 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
269
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
270 static gint
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
271 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
272 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
273 GaimConvWindow *win = (GaimConvWindow *)d;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
274
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
275 gaim_conv_window_destroy(win);
4361
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
276
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
277 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280 static gint
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281 close_conv_cb(GtkWidget *w, gpointer d)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
283 GaimConversation *conv = (GaimConversation *)d;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
285 gaim_conversation_destroy(conv);
4361
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
286
23ca251ed655 [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
287 return TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
288 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
289
7446
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
290 /* Courtesy of Galeon! */
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
291 static void
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
292 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state)
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
293 {
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
294 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE)
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
295 gtk_widget_set_state(widget, GTK_STATE_NORMAL);
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
296 }
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
297
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
298 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
299 cancel_insert_image_cb(GtkWidget *unused, GaimGtkConversation *gtkconv)
5106
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
300 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
301 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image),
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
302 FALSE);
5106
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
303
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
304 if (gtkconv->dialogs.image)
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
305 gtk_widget_destroy(gtkconv->dialogs.image);
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
306
5106
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
307 gtkconv->dialogs.image = NULL;
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
308 }
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
309
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
310 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
311 insert_image_cb(GtkWidget *save, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
312 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
313 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314 char buf[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
315 GtkWidget *window;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
316
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
317 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
318
5046
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
319 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))) {
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
320 window = gtk_file_selection_new(_("Gaim - Insert Image"));
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
321 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir());
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
322 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
323
5106
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
324 g_object_set_data(G_OBJECT(window), "user_data", conv);
5046
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
325 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
326 "clicked", G_CALLBACK(do_insert_image_cb), window);
5106
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
327 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
328 "clicked", G_CALLBACK(cancel_insert_image_cb), gtkconv);
5046
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
329
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
330 gtk_widget_show(window);
5106
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
331 gtkconv->dialogs.image = window;
5046
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
332 } else {
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
333 gtk_widget_grab_focus(gtkconv->entry);
5106
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
334 if(gtkconv->dialogs.image)
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
335 gtk_widget_destroy(gtkconv->dialogs.image);
37a446bb9501 [gaim-migrate @ 5469]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5105
diff changeset
336 gtkconv->dialogs.image = NULL;
5046
ba5af38017fa [gaim-migrate @ 5394]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5024
diff changeset
337 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
338 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
339
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
340 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
341 insert_link_cb(GtkWidget *w, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
342 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
343 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
344
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
345 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
346
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
347 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
348 show_insert_link(gtkconv->toolbar.link, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
349 else if (gtkconv->dialogs.link)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
350 cancel_link(gtkconv->toolbar.link, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
351 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
352 gaim_gtk_advance_past(gtkconv, "<A HREF>", "</A>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
353
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
354 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
355 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
356
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
357 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
358 insert_smiley_cb(GtkWidget *smiley, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
359 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
360 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
361
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
362 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
364 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
365 show_smiley_dialog(conv, smiley);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
366 else if (gtkconv->dialogs.smiley)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
367 close_smiley_dialog(smiley, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
368
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
369 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
370 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
371
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
372 static gboolean
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
373 entry_key_pressed_cb_1(GtkTextBuffer *buffer)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
374 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
375 check_everything(buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
376
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
377 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
378 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
379
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
380 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
381 send_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
382 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
383 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 char *buf, *buf2;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385 GtkTextIter start_iter, end_iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
386 int limit;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
387 GaimConnection *gc = gaim_conversation_get_gc(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
388
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
389 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
390
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end_iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
393 buf2 = gtk_text_buffer_get_text(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
394 &start_iter, &end_iter, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
395
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
396 set_toggle(gtkconv->toolbar.bold, FALSE);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
397 set_toggle(gtkconv->toolbar.italic, FALSE);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
398 set_toggle(gtkconv->toolbar.underline, FALSE);
5049
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
399 set_toggle(gtkconv->toolbar.larger_size, FALSE);
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
400 set_toggle(gtkconv->toolbar.normal_size, FALSE);
5049
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
401 set_toggle(gtkconv->toolbar.smaller_size,FALSE);
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
402 set_toggle(gtkconv->toolbar.font, FALSE);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
403 set_toggle(gtkconv->toolbar.fgcolor, FALSE);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
404 set_toggle(gtkconv->toolbar.bgcolor, FALSE);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
405 set_toggle(gtkconv->toolbar.link, FALSE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
406
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
407 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
408
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
409 limit = 32 * 1024; /* This will be done again in gaim_conv_im_send. *shrug* */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
410
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
411 buf = g_malloc(limit);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
412 strncpy(buf, buf2, limit);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
413
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
414 g_free(buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
415
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
416 if (strlen(buf) == 0) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
417 g_free(buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
418
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
419 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
420 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
421
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
422 buf2 = g_malloc(limit);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
423
6622
277eb0b14653 [gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents: 6621
diff changeset
424 if (gc && gc->flags & GAIM_CONNECTION_HTML) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
425 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
426 g_snprintf(buf2, limit, "<B>%s</B>", buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
427 strcpy(buf, buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
428 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
429
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
430 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
431 g_snprintf(buf2, limit, "<I>%s</I>", buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
432 strcpy(buf, buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
433 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
434
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
435 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
436 g_snprintf(buf2, limit, "<U>%s</U>", buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
437 strcpy(buf, buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
438 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
439
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
440 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_strikethrough")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
441 g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
442 strcpy(buf, buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
443 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
444
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
445 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") ||
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
446 gtkconv->has_font) {
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
447
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
448 g_snprintf(buf2, limit,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
449 "<FONT FACE=\"%s\">%s</FONT>", gtkconv->fontface, buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
450 strcpy(buf, buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
451 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
452
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
453 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
454 g_snprintf(buf2, limit,
6141
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
455 "<FONT SIZE=\"%d\">%s</FONT>",
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
456 gaim_prefs_get_int("/gaim/gtk/conversations/font_size"),
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
457 buf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
458 strcpy(buf, buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
459 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
460
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
461 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
462 g_snprintf(buf2, limit,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
463 "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
464 gtkconv->fg_color.red / 256,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
465 gtkconv->fg_color.green / 256,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
466 gtkconv->fg_color.blue / 256, buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
467 strcpy(buf, buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
468 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
469
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6622
diff changeset
470 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) && gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
471 g_snprintf(buf2, limit,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
472 "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>",
4421
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
473 gtkconv->bg_color.red / 256,
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
474 gtkconv->bg_color.green / 256,
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
475 gtkconv->bg_color.blue / 256, buf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
476 strcpy(buf, buf2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
477 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
478 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
479
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
480 g_free(buf2);
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 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
483 gaim_conv_im_send(GAIM_CONV_IM(conv), buf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
484 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
485 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
486
5629
b4e5e815b5f4 [gaim-migrate @ 6036]
Nathan Walp <nwalp@pidgin.im>
parents: 5582
diff changeset
487 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
488 gaim_conv_window_hide(gaim_conversation_get_window(conv));
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
489
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
490 g_free(buf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
491
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
492 gtk_text_buffer_set_text(gtkconv->entry_buffer, "", -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
493 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
494
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
495 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
496 add_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
497 {
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
498 GaimAccount *account;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
499 GaimBuddy *b;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
500 const char *name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
501
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
502 account = gaim_conversation_get_account(conv);
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
503 name = gaim_conversation_get_name(conv);
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
504 b = gaim_find_buddy(account, name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
505
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
506 if (b != NULL)
5975
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5966
diff changeset
507 show_confirm_del(b);
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
508 else if (account != NULL && gaim_account_is_connected(account))
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
509 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
510
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
511 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
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
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
515 info_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
516 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
517 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
518
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
520
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
521 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
522 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
523 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
524 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
525 GtkTreeSelection *sel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
526 const char *name;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
527
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
528 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
529
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
530 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
531 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
532
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
533 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
534 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
535 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
536 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
537
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
538 serv_get_info(gaim_conversation_get_gc(conv), (char *)name);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
539 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
540 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541 serv_get_info(gaim_conversation_get_gc(conv),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
542 (char *)gaim_conversation_get_name(conv));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
544 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
545 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
546 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
547
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
548 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
549 warn_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
550 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
551 show_warn_dialog(gaim_conversation_get_gc(conv),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
552 (char *)gaim_conversation_get_name(conv));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
553
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
554 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
555 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
556
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
557 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
558 block_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
559 {
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
560 GaimAccount *account;
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
561
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
562 account = gaim_conversation_get_account(conv);
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
563
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6291
diff changeset
564 if (account != NULL && gaim_account_is_connected(account))
6399
36eb1f7411fa [gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents: 6398
diff changeset
565 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
566
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
567 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
568 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
569
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
570 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
571 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
572 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
573 const char *buddy, *message;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
574 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
575
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
576 gtkconv = GAIM_GTK_CONVERSATION(info->conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
577
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
578 if (resp == GTK_RESPONSE_OK) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
579 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
580 message = gtk_entry_get_text(GTK_ENTRY(info->message));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
581
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
582 if (!g_ascii_strcasecmp(buddy, "")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
583 g_free(info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
584
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
585 return;
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
588 serv_chat_invite(gaim_conversation_get_gc(info->conv),
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
589 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)),
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
590 message, buddy);
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
593 gtk_widget_destroy(invite_dialog);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
594 invite_dialog = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
595
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
596 g_free(info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
597 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
598
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
599 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
600 invite_cb(GtkWidget *widget, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
601 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
602 InviteBuddyInfo *info = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
603
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
604 if (invite_dialog == NULL) {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
605 GaimConnection *gc;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
606 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
607 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
608 GtkWidget *label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
609 GtkWidget *vbox, *hbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
610 GtkWidget *table;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
611 GtkWidget *img;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
612
5024
3b5412e4b483 [gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents: 5012
diff changeset
613 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
614
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
615 info = g_new0(InviteBuddyInfo, 1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
616 info->conv = conv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
617
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
618 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
619 win = gaim_conversation_get_window(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
620 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
621
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
622 /* Create the new dialog. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
623 invite_dialog = gtk_dialog_new_with_buttons(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
624 _("Gaim - Invite Buddy Into Chat Room"),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
625 GTK_WINDOW(gtkwin->window),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
626 GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
627 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
628
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
629 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
630 GTK_RESPONSE_OK);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
631 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
632 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
633 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
634
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
635 /* Setup the outside spacing. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
636 vbox = GTK_DIALOG(invite_dialog)->vbox;
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 gtk_box_set_spacing(GTK_BOX(vbox), 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
639 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
640
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
641 /* Setup the inner hbox and put the dialog's icon in it. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
642 hbox = gtk_hbox_new(FALSE, 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
643 gtk_container_add(GTK_CONTAINER(vbox), hbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
644 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
645 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
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 /* Setup the right vbox. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
648 vbox = gtk_vbox_new(FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
649 gtk_container_add(GTK_CONTAINER(hbox), vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
650
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
651 /* Put our happy label in it. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
652 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
653 "to invite, along with an optional invite "
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
654 "message."));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
655 gtk_widget_set_size_request(label, 350, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
656 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
657 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
658 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
659
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
660 /* 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
661 hbox = gtk_hbox_new(FALSE, 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
662 gtk_container_add(GTK_CONTAINER(vbox), hbox);
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 /* Setup the table we're going to use to lay stuff out. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
665 table = gtk_table_new(2, 2, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
666 gtk_table_set_row_spacings(GTK_TABLE(table), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
667 gtk_table_set_col_spacings(GTK_TABLE(table), 6);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
668 gtk_container_set_border_width(GTK_CONTAINER(table), 12);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
669 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
670
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
671 /* Now the Buddy label */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
672 label = gtk_label_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
673 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
674 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
675 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
676
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
677 /* Now the Buddy drop-down entry field. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
678 info->entry = gtk_combo_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
679 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
680 gtk_entry_set_activates_default(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
681 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE);
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 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
684 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
685
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
686 /* Fill in the names. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
687 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
688 generate_invite_user_names(gc));
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
691 /* Now the label for "Message" */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
692 label = gtk_label_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
693 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
694 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
695 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
696
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
697
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
698 /* And finally, the Message entry field. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
699 info->message = gtk_entry_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
700 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE);
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 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
703 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
704
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
705 /* Connect the signals. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
706 g_signal_connect(G_OBJECT(invite_dialog), "response",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
707 G_CALLBACK(do_invite), info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
708 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
709
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
710 gtk_widget_show_all(invite_dialog);
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 if (info != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
713 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
714 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
715
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
716 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
717 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
718 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
719 GaimConvWindow *win = (GaimConvWindow *)data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
720
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
721 save_convo(NULL, gaim_conv_window_get_active_conversation(win));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
722 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
723
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
724 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
725 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
726 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
727 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
728 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
729
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
730 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
731
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
732 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv), gaim_conversation_get_account(conv));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
733 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
734
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
735 struct _search {
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
736 GaimGtkConversation *gtkconv;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
737 GtkWidget *entry;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
738 };
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
739
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
740 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s)
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
741 {
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
742 switch (resp) {
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
743 case GTK_RESPONSE_OK:
7298
99bf6b4456ad [gaim-migrate @ 7882]
Christian Hammond <chipx86@chipx86.com>
parents: 7295
diff changeset
744 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), gtk_entry_get_text(GTK_ENTRY(s->entry)));
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
745 break;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
746 case GTK_RESPONSE_CLOSE:
7298
99bf6b4456ad [gaim-migrate @ 7882]
Christian Hammond <chipx86@chipx86.com>
parents: 7295
diff changeset
747 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml));
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
748 gtk_widget_destroy(s->gtkconv->dialogs.search);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
749 s->gtkconv->dialogs.search = NULL;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
750 g_free(s);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
751 break;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
752 }
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
753 }
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
754
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
755 static void
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
756 menu_search_cb(gpointer data, guint action, GtkWidget *widget)
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
757 {
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
758 GaimConvWindow *win = (GaimConvWindow *)data;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
759 GaimConversation *conv = gaim_conv_window_get_active_conversation(win);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
760 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
761 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
762 GtkWidget *hbox, *vbox;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
763 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
764 GtkWidget *label, *entry;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
765 struct _search *s;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
766
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
767 if (gtkconv->dialogs.search)
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
768 return;
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
769
7678
e71492542f69 [gaim-migrate @ 8322]
Sean Egan <seanegan@pidgin.im>
parents: 7650
diff changeset
770 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(GAIM_ALERT_TITLE, GTK_WINDOW(gtkwin->window),
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
771 GTK_DIALOG_DESTROY_WITH_PARENT,
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
772 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
773 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
774 gtk_container_set_border_width (GTK_CONTAINER(gtkconv->dialogs.search), 6);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
775 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
776 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
777 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
778 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6);
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
779
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
780 hbox = gtk_hbox_new(FALSE, 6);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
781 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), hbox);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
782 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
783 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
784
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
785 vbox = gtk_vbox_new(FALSE, 0);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
786 gtk_container_add(GTK_CONTAINER(hbox), vbox);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
787
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
788 label = gtk_label_new(NULL);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
789 gtk_label_set_markup(GTK_LABEL(label), _("<span weight='bold' size='larger'>Enter a search phrase\n</span>"));
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
790 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
791 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
792 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
793
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
794 hbox = gtk_hbox_new(FALSE, 6);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
795 gtk_container_add(GTK_CONTAINER(vbox), hbox);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
796 label = gtk_label_new(_("Search term: "));
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
797 entry = gtk_entry_new();
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
798 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
799 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
800
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
801 s = g_malloc(sizeof(struct _search));
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
802 s->gtkconv = gtkconv;
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
803 s->entry = entry;
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
804
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
805 gtk_dialog_set_default_response (GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
806 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", G_CALLBACK(do_search_cb), s);
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
807
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
808 gtk_widget_show_all(gtkconv->dialogs.search);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
809 }
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
810
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
811 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
812 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
813 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
814 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
815 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
816
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
817 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
818
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
819 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv),
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
820 gaim_conversation_get_name(conv), NULL);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
821 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
822
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
823 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
824 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
825 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
826 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
827 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
828 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
829
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
830 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
831 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
832
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
833 show_insert_link(gtkconv->toolbar.link, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
834 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
835
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
836 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
837 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
838 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
839 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
840 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
841
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
842 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
843
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
844 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image),
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
845 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image)));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
846 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
847
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
848 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
849 menu_alias_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
850 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
851 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
852 GaimConversation *conv;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
853 GaimBuddy *b;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
854
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
855 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
856
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
857 b = gaim_find_buddy(gaim_conversation_get_account(conv),
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
858 gaim_conversation_get_name(conv));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
859
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
860 if (b != NULL) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
861 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
862 alias_dialog_bud(b);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
863 #if 0
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
864 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
865 alias_dialog_chat((struct chat *)b);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
866 #endif
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
867 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
868 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
869
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
870 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
871 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
872 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
873 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
874 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
875
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
876 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
877
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
878 info_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
879 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
880
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
881 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
882 menu_invite_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
883 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
884 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
885 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
886
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
887 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
888
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
889 invite_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
890 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
891
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
892 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
893 menu_warn_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
894 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
895 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
896 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
897
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
898 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
899
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
900 warn_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
901 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
902
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
903 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
904 menu_block_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
905 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
906 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
907 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
908
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
909 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
910
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
911 block_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
912 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
913
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
914 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
915 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
916 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
917 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
918 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
919
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
920 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
921
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
922 add_cb(NULL, conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
923 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
924
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
925 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
926 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
927 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
928 GaimConvWindow *win = (GaimConvWindow *)data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
929
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
930 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
931 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
932
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
933 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
934 menu_logging_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
935 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
936 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
937 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
938
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
939 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
940
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
941 if (conv == NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
942 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
943
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
944 gaim_conversation_set_logging(conv,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
945 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
946 }
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 static void
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
949 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
950 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
951 GaimConvWindow *win = (GaimConvWindow *)data;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
952 GaimConversation *conv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
953 GaimGtkConversation *gtkconv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
954
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
955 conv = gaim_conv_window_get_active_conversation(win);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
956
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
957 if (conv == NULL)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
958 return;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
959
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
960 gtkconv = GAIM_GTK_CONVERSATION(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
961
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
962 gtkconv->show_formatting_toolbar =
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
963 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
964
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
965 if (gtkconv->show_formatting_toolbar)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
966 gtk_widget_show(gtkconv->toolbar.toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
967 else
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
968 gtk_widget_hide(gtkconv->toolbar.toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
969 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
970
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
971 static void
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
972 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
973 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
974 GaimConvWindow *win = (GaimConvWindow *)data;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
975 GaimConversation *conv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
976 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
977
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
978 conv = gaim_conv_window_get_active_conversation(win);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
979
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
980 if (!conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
981 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
982
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
983 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
984
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
985 gtkconv->make_sound =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
986 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
987 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
988
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
989 void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
990 im_cb(GtkWidget *widget, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
991 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
992 GaimConversation *conv2;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
993 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
994 GaimGtkChatPane *gtkchat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
995 GaimAccount *account;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
996 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
997 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
998 GtkTreeSelection *sel;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
999 const char *name;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1000
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1001 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1002 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1003
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1004 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1005 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1006
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1007 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1008 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1009 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1010 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1011
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1012 if (*name == '@') name++;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1013 if (*name == '%') name++;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1014 if (*name == '+') name++;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1015
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1016 account = gaim_conversation_get_account(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1017
6640
007eb21016b4 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6629
diff changeset
1018 conv2 = gaim_find_conversation_with_account(name, account);
007eb21016b4 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6629
diff changeset
1019
007eb21016b4 [gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents: 6629
diff changeset
1020 if (conv2 != NULL)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1021 gaim_conv_window_raise(gaim_conversation_get_window(conv2));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1022 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1023 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, name);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1024 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1025
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1026 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1027 ignore_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1028 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1029 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1030 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1031 GaimConvChat *chat;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1032 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1033 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1034 GtkTreeSelection *sel;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1035 const char *name;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1036 int pos;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1037
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1038 chat = GAIM_CONV_CHAT(conv);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1039 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1040 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1041
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1042 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1043 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1044
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1045 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1046 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1047 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1048 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1049 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1050 return;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1051
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1052 pos = g_list_index(gaim_conv_chat_get_users(chat), name);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1053
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1054 if (gaim_conv_chat_is_user_ignored(chat, name))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1055 gaim_conv_chat_unignore(chat, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1056 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1057 gaim_conv_chat_ignore(chat, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1058
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1059 add_chat_buddy_common(conv, name, pos);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1060 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1061
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1062 static void
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1063 chat_do_im(GaimConversation *conv, const char *who)
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1064 {
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1065 GaimPluginProtocolInfo *prpl_info = NULL;
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1066 char *real_who;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1067 GaimConversation *conv2;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1068 GaimAccount *account;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1069
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1070 account = gaim_conversation_get_account(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1071
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1072 if(account && account->gc)
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1073 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1074
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1075 if(prpl_info && prpl_info->get_cb_real_name)
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1076 real_who = prpl_info->get_cb_real_name(account->gc,
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1077 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1078 else
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1079 real_who = g_strdup(who);
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1080
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1081 if(!real_who)
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1082 return;
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1083
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1084 conv2 = gaim_find_conversation_with_account(real_who, account);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1085
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1086 if (conv2 != NULL)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1087 gaim_conv_window_show(gaim_conversation_get_window(conv2));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1088 else
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1089 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who);
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1090
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1091 g_free(real_who);
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1092 }
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1093
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1094 static void
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1095 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv)
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1096 {
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1097 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
1098
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1099 chat_do_im(conv, who);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1100 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1101
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1102 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1103 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1104 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1105 GaimPluginProtocolInfo *prpl_info = NULL;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1106 GaimConnection *gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1107 char *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1108
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1109 gc = gaim_conversation_get_gc(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1110 who = g_object_get_data(G_OBJECT(w), "user_data");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1111
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1112 if (gc != NULL) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1113 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1114
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1115 /*
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1116 * If there are special needs for getting info on users in
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1117 * buddy chat "rooms"...
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1118 */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1119 if (prpl_info->get_cb_info != NULL)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1120 prpl_info->get_cb_info(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1121 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1122 prpl_info->get_info(gc, who);
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 }
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 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1127 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv)
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 GaimPluginProtocolInfo *prpl_info = NULL;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1130 GaimConnection *gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1131 char *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1132
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1133 gc = gaim_conversation_get_gc(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1134 who = g_object_get_data(G_OBJECT(w), "user_data");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1135
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1136 if (gc != NULL) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1137 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1138
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1139 /*
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1140 * 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
1141 */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1142
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1143 if (prpl_info->get_cb_away != NULL)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1144 prpl_info->get_cb_away(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1145 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1146 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1147
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1148 static void
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1149 menu_chat_add_cb(GtkWidget *w, GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1150 {
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1151 GaimAccount *account;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1152 GaimBuddy *b;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1153 char *name;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1154
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1155 account = gaim_conversation_get_account(conv);
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1156 name = g_object_get_data(G_OBJECT(w), "user_data");
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1157 b = gaim_find_buddy(account, name);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1158
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1159 if (b != NULL)
5975
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5966
diff changeset
1160 show_confirm_del(b);
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1161 else if (account != NULL && gaim_account_is_connected(account))
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1162 gaim_blist_request_add_buddy(account, name, NULL, NULL);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1163
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1164 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1165 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1166
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1167 static gint
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1168 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1169 GaimConversation *conv)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1170 {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1171 GaimPluginProtocolInfo *prpl_info = NULL;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1172 GaimGtkConversation *gtkconv;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1173 GaimGtkChatPane *gtkchat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1174 GaimConnection *gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1175 GaimAccount *account;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1176 GtkTreePath *path;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1177 GtkTreeIter iter;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1178 GtkTreeModel *model;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1179 GtkTreeViewColumn *column;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1180 gchar *who;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1181 int x, y;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1182
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1183 gtkconv = GAIM_GTK_CONVERSATION(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1184 gtkchat = gtkconv->u.chat;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1185 account = gaim_conversation_get_account(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1186 gc = account->gc;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1187
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1188 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1189
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1190 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
1191 event->x, event->y, &path, &column, &x, &y);
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 if (path == NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1194 return FALSE;
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 if (gc != NULL)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1197 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
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 gtk_tree_selection_select_path(GTK_TREE_SELECTION(
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1200 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1201
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1202 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1203 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1204
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1205 if (*who == '@') who++;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1206 if (*who == '%') who++;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1207 if (*who == '+') who++;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1208
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1209 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
7398
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1210 chat_do_im(conv, who);
90663d97aa6a [gaim-migrate @ 7994]
Nathan Walp <nwalp@pidgin.im>
parents: 7386
diff changeset
1211 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1212 static GtkWidget *menu = NULL;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1213 GtkWidget *button;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1214
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1215 /*
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1216 * If a menu already exists, destroy it before creating a new one,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1217 * thus freeing-up the memory it occupied.
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1218 */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1219
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1220 if (menu)
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1221 gtk_widget_destroy(menu);
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 menu = gtk_menu_new();
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1224
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1225 button = gtk_menu_item_new_with_label(_("IM"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1226 g_signal_connect(G_OBJECT(button), "activate",
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1227 G_CALLBACK(menu_chat_im_cb), conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1228 g_object_set_data(G_OBJECT(button), "user_data", who);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1229 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1230 gtk_widget_show(button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1231
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1232 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who))
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1233 button = gtk_menu_item_new_with_label(_("Un-Ignore"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1234 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1235 button = gtk_menu_item_new_with_label(_("Ignore"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1236
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1237 g_signal_connect(G_OBJECT(button), "activate",
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1238 G_CALLBACK(ignore_cb), conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1239 g_object_set_data(G_OBJECT(button), "user_data", who);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1240 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1241 gtk_widget_show(button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1242
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1243 if (gc && prpl_info->get_info) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1244 button = gtk_menu_item_new_with_label(_("Info"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1245 g_signal_connect(G_OBJECT(button), "activate",
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1246 G_CALLBACK(menu_chat_info_cb), conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1247 g_object_set_data(G_OBJECT(button), "user_data", who);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1248 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1249 gtk_widget_show(button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1250 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1251
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1252 if (gc && prpl_info->get_cb_away) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1253 button = gtk_menu_item_new_with_label(_("Get Away Msg"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1254 g_signal_connect(G_OBJECT(button), "activate",
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1255 G_CALLBACK(menu_chat_get_away_cb), conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1256 g_object_set_data(G_OBJECT(button), "user_data", who);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1257 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1258 gtk_widget_show(button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1259 }
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 /* Added by Jonas <jonas@birme.se> */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1262 if (gc) {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1263 if (gaim_find_buddy(gc->account, who))
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1264 button = gtk_menu_item_new_with_label(_("Remove"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1265 else
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1266 button = gtk_menu_item_new_with_label(_("Add"));
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 g_signal_connect(G_OBJECT(button), "activate",
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1269 G_CALLBACK(menu_chat_add_cb), 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 g_object_set_data(G_OBJECT(button), "user_data", who);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1272 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1273 gtk_widget_show(button);
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 /* End Jonas */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1276
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1277 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1278 event->button, event->time);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1279 }
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 return TRUE;
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1282 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1283
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1284 static gboolean
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1285 entry_key_pressed_cb_2(GtkWidget *entry, GdkEventKey *event, gpointer data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1286 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1287 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1288 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1289 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1290 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1291
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1292 conv = (GaimConversation *)data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1293 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1294 win = gaim_conversation_get_window(conv);
4362
c5677619dffa [gaim-migrate @ 4628]
Nathan Walp <nwalp@pidgin.im>
parents: 4361
diff changeset
1295 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1296
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
1297 if (event->keyval == GDK_Page_Up) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1298 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1299
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1300 if (!(event->state & GDK_CONTROL_MASK))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1301 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1302 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1303 else if (event->keyval == GDK_Page_Down) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1304 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1305
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1306 if (!(event->state & GDK_CONTROL_MASK))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1307 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1308 }
6033
258034132922 [gaim-migrate @ 6483]
Mark Doliner <markdoliner@pidgin.im>
parents: 6030
diff changeset
1309 else if (event->keyval == GDK_F2) {
258034132922 [gaim-migrate @ 6483]
Mark Doliner <markdoliner@pidgin.im>
parents: 6030
diff changeset
1310
258034132922 [gaim-migrate @ 6483]
Mark Doliner <markdoliner@pidgin.im>
parents: 6030
diff changeset
1311 gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps",
258034132922 [gaim-migrate @ 6483]
Mark Doliner <markdoliner@pidgin.im>
parents: 6030
diff changeset
1312 !gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1313 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1314 else if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1315 if ((event->state & GDK_CONTROL_MASK) &&
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1316 gaim_prefs_get_bool("/gaim/gtk/conversations/ctrl_enter_sends")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1317
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1318 send_cb(NULL, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1319 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1320
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1321 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1322 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1323 else if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) &&
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1324 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1325
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1326 send_cb(NULL, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1327 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1328
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1329 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1330 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1331
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1332 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1333 }
6014
69f5b2638dd1 [gaim-migrate @ 6463]
Nathan Walp <nwalp@pidgin.im>
parents: 5975
diff changeset
1334 else if ((event->state & GDK_CONTROL_MASK) && (event->keyval == 'm' ||
69f5b2638dd1 [gaim-migrate @ 6463]
Nathan Walp <nwalp@pidgin.im>
parents: 5975
diff changeset
1335 event->keyval == 'M')) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1336 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1337 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, "\n", 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1338 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1339 else if (event->state & GDK_CONTROL_MASK) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1340 switch (event->keyval) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1341 case GDK_Up:
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1342 if (!conv->send_history)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1343 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1344
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1345 if (!conv->send_history->prev) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1346 GtkTextIter start, end;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1347
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1348 if (conv->send_history->data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1349 g_free(conv->send_history->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1350
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1351 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1352 &start);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1353 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1354
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1355 conv->send_history->data =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1356 gtk_text_buffer_get_text(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1357 &start, &end, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1358 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1360 if (conv->send_history->next &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1361 conv->send_history->next->data) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1362
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1363 conv->send_history = conv->send_history->next;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1364 gtk_text_buffer_set_text(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1365 conv->send_history->data, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1366 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1367
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1368 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1369
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1370 case GDK_Down:
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1371 if (!conv->send_history)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1372 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1373
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1374 if (conv->send_history->prev) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1375 conv->send_history = conv->send_history->prev;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1376
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1377 if (conv->send_history->data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1378 gtk_text_buffer_set_text(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1379 conv->send_history->data, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1380 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1381
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1382 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1383 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1384
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1385 if (gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1386 switch (event->keyval) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1387 case 'i':
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1388 case 'I':
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1389 set_toggle(gtkconv->toolbar.italic,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1390 !gtk_toggle_button_get_active(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1391 GTK_TOGGLE_BUTTON(gtkconv->toolbar.italic)));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1392
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1393 g_signal_stop_emission_by_name(G_OBJECT(entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1394 "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1395 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1396
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1397 case 'u': /* ctrl-u is GDK_Clear, which clears the line. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1398 case 'U':
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1399 set_toggle(gtkconv->toolbar.underline,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1400 !gtk_toggle_button_get_active(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1401 GTK_TOGGLE_BUTTON(gtkconv->toolbar.underline)));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1402
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1403 g_signal_stop_emission_by_name(G_OBJECT(entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1404 "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1405 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1406
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1407 case 'b': /* ctrl-b is GDK_Left, which moves backwards. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1408 case 'B':
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1409 set_toggle(gtkconv->toolbar.bold,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1410 !gtk_toggle_button_get_active(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1411 GTK_TOGGLE_BUTTON(gtkconv->toolbar.bold)));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1412
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1413 g_signal_stop_emission_by_name(G_OBJECT(entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1414 "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1415 break;
6014
69f5b2638dd1 [gaim-migrate @ 6463]
Nathan Walp <nwalp@pidgin.im>
parents: 5975
diff changeset
1416
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1417 case '-':
6015
befcdc52e6e2 [gaim-migrate @ 6464]
Nathan Walp <nwalp@pidgin.im>
parents: 6014
diff changeset
1418 set_toggle(gtkconv->toolbar.smaller_size,
befcdc52e6e2 [gaim-migrate @ 6464]
Nathan Walp <nwalp@pidgin.im>
parents: 6014
diff changeset
1419 !gtk_toggle_button_get_active(
befcdc52e6e2 [gaim-migrate @ 6464]
Nathan Walp <nwalp@pidgin.im>
parents: 6014
diff changeset
1420 GTK_TOGGLE_BUTTON(gtkconv->toolbar.smaller_size)));
6014
69f5b2638dd1 [gaim-migrate @ 6463]
Nathan Walp <nwalp@pidgin.im>
parents: 5975
diff changeset
1421
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1422 g_signal_stop_emission_by_name(G_OBJECT(entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1423 "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1424 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1425
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1426 case '=':
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1427 case '+':
6015
befcdc52e6e2 [gaim-migrate @ 6464]
Nathan Walp <nwalp@pidgin.im>
parents: 6014
diff changeset
1428 set_toggle(gtkconv->toolbar.larger_size,
befcdc52e6e2 [gaim-migrate @ 6464]
Nathan Walp <nwalp@pidgin.im>
parents: 6014
diff changeset
1429 !gtk_toggle_button_get_active(
befcdc52e6e2 [gaim-migrate @ 6464]
Nathan Walp <nwalp@pidgin.im>
parents: 6014
diff changeset
1430 GTK_TOGGLE_BUTTON(gtkconv->toolbar.larger_size)));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1431
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1432 g_signal_stop_emission_by_name(G_OBJECT(entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1433 "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1434 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1435
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1436 case '0':
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1437 set_toggle(gtkconv->toolbar.normal_size,
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1438 !gtk_toggle_button_get_active(
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1439 GTK_TOGGLE_BUTTON(gtkconv->toolbar.normal_size)));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1440
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1441 g_signal_stop_emission_by_name(G_OBJECT(entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1442 "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1443 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1444
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1445 case 'f':
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1446 case 'F':
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1447 set_toggle(gtkconv->toolbar.font,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1448 !gtk_toggle_button_get_active(
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1449 GTK_TOGGLE_BUTTON(gtkconv->toolbar.font)));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1450
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1451 g_signal_stop_emission_by_name(G_OBJECT(entry),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1452 "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1453 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1454 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1455 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1456
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1457 if (gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1458 char buf[7];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1459
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1460 *buf = '\0';
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1461
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1462 switch (event->keyval) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1463 case '1': strcpy(buf, ":-)"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1464 case '2': strcpy(buf, ":-("); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1465 case '3': strcpy(buf, ";-)"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1466 case '4': strcpy(buf, ":-P"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1467 case '5': strcpy(buf, "=-O"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1468 case '6': strcpy(buf, ":-*"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1469 case '7': strcpy(buf, ">:o"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1470 case '8': strcpy(buf, "8-)"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1471 case '!': strcpy(buf, ":-$"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1472 case '@': strcpy(buf, ":-!"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1473 case '#': strcpy(buf, ":-["); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1474 case '$': strcpy(buf, "O:-)"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1475 case '%': strcpy(buf, ":-/"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1476 case '^': strcpy(buf, ":'("); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1477 case '&': strcpy(buf, ":-X"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1478 case '*': strcpy(buf, ":-D"); break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1479 default: break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1480 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1481
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1482 if (*buf) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1483 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1484 buf, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1485 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1486 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1487 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1488
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1489 if (event->keyval == 'l') {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1490 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1491 g_string_free(conv->history, TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1492 conv->history = g_string_new("");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1493 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1494 else if (event->keyval == 'n') {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1495 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1496
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1497 show_im_dialog();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1498 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1499 else if (event->keyval == 'z') {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1500 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5133
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
1501
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
1502 gtk_window_iconify(GTK_WINDOW(gtkwin->window));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1503 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1504 else if (event->keyval == '[') {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1505 gaim_conv_window_switch_conversation(win,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1506 gaim_conversation_get_index(conv) - 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1507
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1508 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1509 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1510 else if (event->keyval == ']') {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1511 gaim_conv_window_switch_conversation(win,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1512 gaim_conversation_get_index(conv) + 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1513
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1514 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1515 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1516 else if (event->keyval == GDK_Tab) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1517 move_next_tab(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1518
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1519 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1520
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1521 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1522 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1523 }
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1524 else if (event->keyval == GDK_Tab &&
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1525 gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1526 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/tab_completion")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1527
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1528 tab_complete(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1529
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1530 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1531
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1532 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1533 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1534 else if ((event->state & GDK_MOD1_MASK) &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1535 event->keyval > '0' && event->keyval <= '9') {
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1536
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1537 gaim_conv_window_switch_conversation(win, event->keyval - '1');
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1538
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1539 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1540 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1541
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1542 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1543 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1544
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1545 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1546 * NOTE:
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1547 * 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
1548 * 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
1549 * 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
1550 * 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
1551 * GtkTextView, but I'm not ready to point any fingers yet.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1552 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1553 static gboolean
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1554 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1555 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1556 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1557 /* Right single click */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1558 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1559
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1560 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1561 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1562
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1563 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1564 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1565
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1566 static gboolean
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1567 refocus_entry_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1568 {
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1569 GaimGtkConversation *gtkconv = data;
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1570
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1571 gtk_widget_grab_focus(gtkconv->entry);
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1572
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1573 return FALSE;
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1574 }
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1575
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1576 static void
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
1577 menu_conv_sel_send_cb(GObject *m, gpointer data)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1578 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1579 GaimConvWindow *win = g_object_get_data(m, "user_data");
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
1580 GaimAccount *account = g_object_get_data(m, "gaim_account");
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1581 GaimConversation *conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1582
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1583 conv = gaim_conv_window_get_active_conversation(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1584
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
1585 gaim_conversation_set_account(conv, account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1586 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1587
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1588 static void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1589 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1590 gchar *new_text, gint new_text_length, gpointer user_data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1591 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1592 GaimConversation *conv = (GaimConversation *)user_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1593
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1594 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1595
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1596 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1597 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1598
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1599 got_typing_keypress(conv, (gtk_text_iter_is_start(position) &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1600 gtk_text_iter_is_end(position)));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1601 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1602
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1603 static void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1604 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1605 GtkTextIter *end_pos, gpointer user_data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1606 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1607 GaimConversation *conv = (GaimConversation *)user_data;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1608 GaimConvIm *im;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1609
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1610 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1611
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1612 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1613 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1614
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1615 im = GAIM_CONV_IM(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1616
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1617 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
1618
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1619 /* We deleted all the text, so turn off typing. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1620 if (gaim_conv_im_get_type_again_timeout(im))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1621 gaim_conv_im_stop_type_again_timeout(im);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1622
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1623 serv_send_typing(gaim_conversation_get_gc(conv),
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
1624 gaim_conversation_get_name(conv),
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1625 GAIM_NOT_TYPING);
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 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1628 /* 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
1629 got_typing_keypress(conv, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1630 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1631 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1632
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1633 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1634 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1635 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1636 static GdkCursor *cursor = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1637
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1638 gtkwin->in_drag = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1639
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1640 if (gtkwin->drag_leave_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1641 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1642 gtkwin->drag_leave_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1643
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1644 gtkwin->drag_leave_signal = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1645 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1646
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1647 if (cursor == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1648 cursor = gdk_cursor_new(GDK_FLEUR);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1649
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1650 /* Grab the pointer */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1651 gtk_grab_add(gtkwin->notebook);
5114
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1652 #ifndef _WIN32
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1653 /* Currently for win32 GTK+ (as of 2.2.1), gdk_pointer_is_grabbed will
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1654 always be true after a button press. */
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1655 if (!gdk_pointer_is_grabbed())
5114
b9121ae509aa [gaim-migrate @ 5477]
Justin Hench
parents: 5106
diff changeset
1656 #endif
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1657 gdk_pointer_grab(gtkwin->notebook->window, FALSE,
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1658 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1659 NULL, cursor, GDK_CURRENT_TIME);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1660 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1661
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1662 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1663 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1664 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1665 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1666
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1667 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1668
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1669 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1670 * Make sure the user moved the mouse far enough for the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1671 * drag to be initiated.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1672 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1673 if (gtkwin->in_predrag) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1674 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1675 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1676 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1677 e->y_root >= gtkwin->drag_max_y) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1678
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1679 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1680 notebook_init_grab(gtkwin, widget);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1681 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1682 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1683 else { /* Otherwise, draw the arrows. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1684 GaimConvWindow *dest_win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1685 GaimGtkWindow *dest_gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1686 GtkNotebook *dest_notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1687 GtkWidget *tab, *last_vis_tab = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1688 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
1689 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1690 gboolean horiz_tabs = FALSE, tab_found = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1691 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1692
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1693 /* Get the window that the cursor is over. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1694 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
1695
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1696 if (dest_win == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1697 dnd_hints_hide_all();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1698
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1699 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1700 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1701
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1702 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1703
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1704 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1705
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1706 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
1707
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1708 arrow1_x = arrow2_x = nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1709 arrow1_y = arrow2_y = nb_y;
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 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1712 e->x_root, e->y_root);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1713
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1714 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1715 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1716
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1717 horiz_tabs = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1718 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1719
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1720 /* Find out where to put the arrows. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1721 for (l = gaim_conv_window_get_conversations(dest_win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1722 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1723 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1724
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1725 GaimConversation *conv = l->data;
4359
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 tab = GAIM_GTK_CONVERSATION(conv)->tabby;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1728
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1729 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1730 * If this is the correct tab, record the positions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1731 * for the arrows.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1732 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1733 if (i == page_num) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1734 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1735 arrow1_x = arrow2_x = nb_x + tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1736 arrow1_y = nb_y + tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1737 arrow2_y = nb_y + tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1738 tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1739 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1740 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1741 arrow1_x = nb_x + tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1742 arrow2_x = nb_x + tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1743 tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1744 arrow1_y = arrow2_y = nb_y + tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1745 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1746
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1747 tab_found = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1748 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1749 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1750 else { /* Keep track of the right-most tab that we see. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1751 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1752 last_vis_tab = tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1753 last_vis_tab_loc = tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1754 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1755 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1756 last_vis_tab = tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1757 last_vis_tab_loc = tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1758 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1759 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1760 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1761
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1762 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1763 * 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
1764 * arrows to the right/bottom of the last visible tab.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1765 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1766 if (!tab_found && last_vis_tab) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1767 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1768 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1769 last_vis_tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1770 arrow1_y = nb_y + last_vis_tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1771 arrow2_y = nb_y + last_vis_tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1772 last_vis_tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1773 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1774 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1775 arrow1_x = nb_x + last_vis_tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1776 arrow2_x = nb_x + last_vis_tab->allocation.x +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1777 last_vis_tab->allocation.width;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1778 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y +
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1779 last_vis_tab->allocation.height;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1780 }
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 if (horiz_tabs) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1785 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1787 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1788 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1789 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1790 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1791 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1792
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1793 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1794 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1796 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1797 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1799 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1800
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1801 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1802
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1803 if (gtkwin->in_drag)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1804 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1805
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1806 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1807 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1808 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1809 e->y_root >= gtkwin->drag_max_y) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1810
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1811 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1812 notebook_init_grab(gtkwin, widget);
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1815 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1816 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1817
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1818 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1819 * THANK YOU GALEON!
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1820 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1821 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1822 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1823 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1824 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1825 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1826 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1827 int tab_clicked;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1828
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1829 if (e->button != 1 || e->type != GDK_BUTTON_PRESS)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1830 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1831
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1832 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1833
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1834 if (gtkwin->in_drag) {
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1835 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1836 "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
1837 return TRUE;
4359
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
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
1840 /*
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1841 * Make sure a tab was actually clicked. The arrow buttons
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1842 * mess things up.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1843 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1844 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
1845
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1846 if (tab_clicked == -1)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1847 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1848
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1849 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1850 * Get the relative position of the press event, with regards to
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1851 * the position of the notebook.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1852 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1853 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1854
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1855 x_rel = e->x_root - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1856 y_rel = e->y_root - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1857
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1858 /* Reset the min/max x/y */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1859 gtkwin->drag_min_x = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1860 gtkwin->drag_min_y = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1861 gtkwin->drag_max_x = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1862 gtkwin->drag_max_y = 0;
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 /* Find out which tab was dragged. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1865 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
1866 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1867 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1868
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1869 if (!GTK_WIDGET_VISIBLE(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1870 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1871
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1872 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1873 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1874
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1875 /* Save the borders of the tab. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1876 gtkwin->drag_min_x = tab->allocation.x + nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1877 gtkwin->drag_min_y = tab->allocation.y + nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1878 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1879 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1880 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1881
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1882 /* Make sure the click occurred in the tab. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1883 if (e->x_root < gtkwin->drag_min_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1884 e->x_root >= gtkwin->drag_max_x ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1885 e->y_root < gtkwin->drag_min_y ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1886 e->y_root >= gtkwin->drag_max_y) {
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 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1889 }
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 gtkwin->in_predrag = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1892
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1893 /* Connect the new motion signals. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1894 gtkwin->drag_motion_signal =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1895 g_signal_connect(G_OBJECT(widget), "motion_notify_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1896 G_CALLBACK(notebook_motion_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1897
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1898 gtkwin->drag_leave_signal =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1899 g_signal_connect(G_OBJECT(widget), "leave_notify_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1900 G_CALLBACK(notebook_leave_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1901
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1902 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1903 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1904
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1905 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1906 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1907 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1908 GaimConvWindow *dest_win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1909 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1910 GaimGtkWindow *dest_gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1911 GaimConversation *conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1912 GtkNotebook *dest_notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1913 gint dest_page_num;
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 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1916 * 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
1917 * 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
1918 * close button.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1919 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1920 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1921 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1922
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1923 if (gdk_pointer_is_grabbed()) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1924 gdk_pointer_ungrab(GDK_CURRENT_TIME);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1925 gtk_grab_remove(widget);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1926 }
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 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1929
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1930 if (!gtkwin->in_predrag && !gtkwin->in_drag)
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1931 return FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1933 /* Disconnect the motion signal. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1934 if (gtkwin->drag_motion_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1935 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1936 gtkwin->drag_motion_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1937
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1938 gtkwin->drag_motion_signal = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1939 }
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 * 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
1943 * signal.
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 if (gtkwin->in_predrag) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1946 gtkwin->in_predrag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1947
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1948 if (gtkwin->drag_leave_signal) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1949 g_signal_handler_disconnect(G_OBJECT(widget),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1950 gtkwin->drag_leave_signal);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1951
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1952 gtkwin->drag_leave_signal = 0;
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 /* If we're not in drag... */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1957 /* We're perfectly normal people! */
4803
58f51119f6b5 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1958 if (!gtkwin->in_drag)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1959 return FALSE;
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 gtkwin->in_drag = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1962
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1963 dnd_hints_hide_all();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1964
4369
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1965 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
1966
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1967 conv = gaim_conv_window_get_active_conversation(win);
4359
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 if (dest_win == NULL) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1970 if (gaim_conv_window_get_conversation_count(win) < 2)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1971 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1972
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1973 if (gaim_conv_window_get_conversation_count(win) > 1) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1974 /* Make a new window to stick this to. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1975 GaimConvWindow *new_win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1976 GaimGtkWindow *new_gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1977 GaimGtkConversation *gtkconv;
4748
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1978 gint win_width, win_height;
5121
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
1979
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
1980 gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1981
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1982 new_win = gaim_conv_window_new();
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1983
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1984 gaim_conv_window_add_conversation(new_win,
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1985 gaim_conv_window_remove_conversation(win,
5139
24c56d94ed79 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5133
diff changeset
1986 gaim_conversation_get_index(conv)));
5121
65545b576da1 [gaim-migrate @ 5484]
David J. Brigada <brigada@prism.net>
parents: 5116
diff changeset
1987
4748
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1988 new_gtkwin = GAIM_GTK_WINDOW(new_win);
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1989
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1990 gtk_window_get_size(GTK_WINDOW(new_gtkwin->window),
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1991 &win_width, &win_height);
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1992
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1993 gtk_window_move(GTK_WINDOW(new_gtkwin->window),
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1994 e->x_root - (win_width / 2),
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1995 e->y_root - (win_height / 2));
8827a9067ba3 [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1996
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
1997 gaim_conv_window_show(new_win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1998 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1999
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2000 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2001 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2002
4369
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
2003 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
228ac8ae0f99 [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
2004
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2005 /* Get the destination notebook. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2006 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2007
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2008 /* Get the destination page number. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2009 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2010 e->x_root, e->y_root);
4359
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 if (win == dest_win) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2013 gaim_conv_window_move_conversation(win,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2014 gaim_conversation_get_index(conv), dest_page_num);
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 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2017 size_t pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2018
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2019 gaim_conv_window_remove_conversation(win,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2020 gaim_conversation_get_index(conv));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2021
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2022 pos = gaim_conv_window_add_conversation(dest_win, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2023
5901
6240aab0e957 [gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents: 5881
diff changeset
2024 if (pos != dest_page_num)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2025 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2026
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2027 gaim_conv_window_switch_conversation(dest_win, dest_page_num);
4359
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2030 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2031
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2032 return TRUE;
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
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2035 static GdkPixbuf *get_tab_icon(GaimConversation *conv)
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2036 {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2037 GaimAccount *account = gaim_conversation_get_account(conv);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2038 const char *name = gaim_conversation_get_name(conv);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2039 GdkPixbuf *status = NULL;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2040
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2041 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2042 GaimBuddy *b = gaim_find_buddy(account, name);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2043 if (b != NULL) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2044 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b,
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2045 GAIM_STATUS_ICON_SMALL);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2046 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2047 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2048
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2049 if (!status) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2050 GdkPixbuf *pixbuf;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2051 pixbuf = create_prpl_icon(account);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2052
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2053 if (pixbuf) {
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2054 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15,
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2055 GDK_INTERP_BILINEAR);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2056 g_object_unref(pixbuf);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2057 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2058 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2059 return status;
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2060 }
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2061
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2062 static void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2063 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2064 gpointer user_data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2065 {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
2066 GaimPluginProtocolInfo *prpl_info = NULL;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2067 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2068 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2069 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2070 GaimGtkWindow *gtkwin;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2071 GaimConnection *gc;
7222
0db5e5ca0104 [gaim-migrate @ 7791]
Sean Egan <seanegan@pidgin.im>
parents: 7219
diff changeset
2072 GdkPixbuf *window_icon = NULL;
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2073
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2074 win = (GaimConvWindow *)user_data;
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2075
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2076 conv = gaim_conv_window_get_conversation_at(win, page_num);
4598
7ce3ef000d4c [gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents: 4596
diff changeset
2077
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2078 g_return_if_fail(conv != NULL);
4598
7ce3ef000d4c [gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents: 4596
diff changeset
2079
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2080 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2081 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2082 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2083
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2084 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2085
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2086 if (gc != NULL) {
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2087 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
2088 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2089 }
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2090
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2091 /* Update the menubar */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2092 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2093 gtk_widget_show(gtkwin->menu.view_log);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2094
5929
561b166ca8ac [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
2095 if (gc && prpl_info->options & OPT_PROTO_IM_IMAGE) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2096 gtk_widget_show(gtkwin->menu.insert_image);
5929
561b166ca8ac [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
2097 gtk_widget_set_sensitive(gtkconv->toolbar.image, TRUE);
561b166ca8ac [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
2098
561b166ca8ac [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
2099 }
561b166ca8ac [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
2100 else {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2101 gtk_widget_hide(gtkwin->menu.insert_image);
5929
561b166ca8ac [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
2102 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
561b166ca8ac [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
2103 }
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2104
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2105 gtk_widget_show(gtkwin->menu.add_pounce);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2106 gtk_widget_show(gtkwin->menu.get_info);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2107 gtk_widget_show(gtkwin->menu.warn);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2108 gtk_widget_show(gtkwin->menu.block);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2109
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2110 if (gaim_find_buddy(gaim_conversation_get_account(conv),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2111 gaim_conversation_get_name(conv)) == NULL) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2112
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2113 gtk_widget_show(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2114 gtk_widget_hide(gtkwin->menu.remove);
5911
df774785c6ee [gaim-migrate @ 6343]
Christian Hammond <chipx86@chipx86.com>
parents: 5908
diff changeset
2115 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2116 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2117 else {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2118 gtk_widget_show(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2119 gtk_widget_hide(gtkwin->menu.add);
5911
df774785c6ee [gaim-migrate @ 6343]
Christian Hammond <chipx86@chipx86.com>
parents: 5908
diff changeset
2120 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2121 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2122
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2123 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2124 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2125
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2126 gtk_widget_hide(gtkwin->menu.invite);
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 if (gtkwin->menu.send_as != NULL)
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2129 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2130
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2131 if (gtkconv->u.im->anim) {
7219
1036024e0268 [gaim-migrate @ 7788]
Sean Egan <seanegan@pidgin.im>
parents: 7154
diff changeset
2132 window_icon = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
1036024e0268 [gaim-migrate @ 7788]
Sean Egan <seanegan@pidgin.im>
parents: 7154
diff changeset
2133 g_object_ref(window_icon);
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2134 } else {
7219
1036024e0268 [gaim-migrate @ 7788]
Sean Egan <seanegan@pidgin.im>
parents: 7154
diff changeset
2135 window_icon = get_tab_icon(conv);
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2136 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2137 }
6030
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6016
diff changeset
2138 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2139 gtk_widget_show(gtkwin->menu.invite);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2140
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2141 gtk_widget_hide(gtkwin->menu.view_log);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2142 gtk_widget_hide(gtkwin->menu.insert_image);
5929
561b166ca8ac [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
2143 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2144
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2145 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2146
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2147 gtk_widget_hide(gtkwin->menu.add_pounce);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2148 gtk_widget_hide(gtkwin->menu.get_info);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2149 gtk_widget_hide(gtkwin->menu.warn);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2150 gtk_widget_hide(gtkwin->menu.block);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2151
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2152 if (gaim_find_chat(gaim_conversation_get_gc(conv),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2153 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv))) == NULL) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2154
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2155 gtk_widget_show(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2156 gtk_widget_hide(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2157 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2158 else {
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2159 gtk_widget_show(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2160 gtk_widget_hide(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2161 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2162
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2163 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2164 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2165
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2166 if (gtkwin->menu.send_as != NULL)
6030
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6016
diff changeset
2167 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
7219
1036024e0268 [gaim-migrate @ 7788]
Sean Egan <seanegan@pidgin.im>
parents: 7154
diff changeset
2168 window_icon = get_tab_icon(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2169 }
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2170
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2171 update_typing_icon(conv);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2172
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2173 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
2174 gaim_conversation_is_logging(conv));
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2175
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2176 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
2177 gtkconv->make_sound);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2178
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2179 gtk_check_menu_item_set_active(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2180 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2181 gtkconv->show_formatting_toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2182
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2183 gtk_widget_grab_focus(gtkconv->entry);
4681
c69f37dbb191 [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
2184
7219
1036024e0268 [gaim-migrate @ 7788]
Sean Egan <seanegan@pidgin.im>
parents: 7154
diff changeset
2185 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon);
1036024e0268 [gaim-migrate @ 7788]
Sean Egan <seanegan@pidgin.im>
parents: 7154
diff changeset
2186 g_object_unref(G_OBJECT(window_icon));
4965
484e7ce9532a [gaim-migrate @ 5299]
Sean Egan <seanegan@pidgin.im>
parents: 4963
diff changeset
2187 gtk_window_set_title(GTK_WINDOW(gtkwin->window),
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
2188 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2189 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2190
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2191 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2192 * Utility functions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2193 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2194 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2195 do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2196 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2197 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bold)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2198 gaim_gtk_surround(gtkconv, "<B>", "</B>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2199 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2200 gaim_gtk_advance_past(gtkconv, "<B>", "</B>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2201
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2202 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2203 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2204
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2205 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2206 do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2207 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2208 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(italic)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2209 gaim_gtk_surround(gtkconv, "<I>", "</I>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2210 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2211 gaim_gtk_advance_past(gtkconv, "<I>", "</I>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2212
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2213 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2214 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2215
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2216 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2217 do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2218 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2219 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(underline)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2220 gaim_gtk_surround(gtkconv, "<U>", "</U>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2221 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2222 gaim_gtk_advance_past(gtkconv, "<U>", "</U>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2223
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2224 gtk_widget_grab_focus(gtkconv->entry);
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2227 static void
7242
d91a60e1095c [gaim-migrate @ 7817]
Herman Bloggs <herman@bluedigits.com>
parents: 7222
diff changeset
2228 do_small(GtkWidget *smalltb, GaimGtkConversation *gtkconv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2229 {
7242
d91a60e1095c [gaim-migrate @ 7817]
Herman Bloggs <herman@bluedigits.com>
parents: 7222
diff changeset
2230 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smalltb)))
5049
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2231 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"1\">", "</FONT>");
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2232 else
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2233 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"1\">", "</FONT>");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2234
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2235 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2236 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2237
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2238 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2239 do_normal(GtkWidget *normal, GaimGtkConversation *gtkconv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2240 {
5049
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2241 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(normal)))
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2242 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"3\">", "</FONT>");
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2243 else
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2244 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"3\">", "</FONT>");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2245
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2246 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2247 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2248
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2249 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2250 do_big(GtkWidget *large, GaimGtkConversation *gtkconv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2251 {
5049
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2252 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(large)))
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2253 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"5\">", "</FONT>");
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2254 else
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
2255 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"5\">", "</FONT>");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2256
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2257 gtk_widget_grab_focus(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2258 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2259
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2260 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2261 toggle_font(GtkWidget *font, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2262 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2263 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2264
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2265 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2266
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2267 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(font)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2268 show_font_dialog(conv, font);
5582
2e5da5db947b [gaim-migrate @ 5986]
Robert McQueen <robot101@debian.org>
parents: 5563
diff changeset
2269 else if (gtkconv->dialogs.font != NULL)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2270 cancel_font(font, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2271 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2272 gaim_gtk_advance_past(gtkconv, "<FONT FACE>", "</FONT>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2273 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2274
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2275 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2276 toggle_fg_color(GtkWidget *color, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2277 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2278 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2279
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2280 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2281
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2282 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2283 show_fgcolor_dialog(conv, color);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2284 else if (gtkconv->dialogs.fg_color != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2285 cancel_fgcolor(color, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2286 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2287 gaim_gtk_advance_past(gtkconv, "<FONT COLOR>", "</FONT>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2288 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2289
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2290 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2291 toggle_bg_color(GtkWidget *color, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2292 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2293 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2294
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2295 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2296
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2297 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2298 show_bgcolor_dialog(conv, color);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2299 else if (gtkconv->dialogs.bg_color != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2300 cancel_bgcolor(color, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2301 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2302 gaim_gtk_advance_past(gtkconv, "<BODY BGCOLOR>", "</BODY>");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2303 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2304
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2305 static void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2306 check_everything(GtkTextBuffer *buffer)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2307 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2308 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2309 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2310
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2311 conv = (GaimConversation *)g_object_get_data(G_OBJECT(buffer),
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2312 "user_data");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2313
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2314 g_return_if_fail(conv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2315
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2316 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2317
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2318 /* CONV TODO */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2319 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2320
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2321 static void
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2322 set_toggle(GtkWidget *tb, gboolean active)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2323 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2324 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tb), active);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2325 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2326
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2327 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2328 got_typing_keypress(GaimConversation *conv, gboolean first)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2329 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2330 GaimConvIm *im;
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2331
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2332 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2333 * 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
2334 * send GAIM_TYPED any time soon.
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2335 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2336
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2337 im = GAIM_CONV_IM(conv);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2338
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2339 if (gaim_conv_im_get_type_again_timeout(im))
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2340 gaim_conv_im_stop_type_again_timeout(im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2341
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2342 gaim_conv_im_start_type_again_timeout(im);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2343
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2344 if (first || (gaim_conv_im_get_type_again(im) != 0 &&
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2345 time(NULL) > gaim_conv_im_get_type_again(im))) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2346
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2347 int timeout = serv_send_typing(gaim_conversation_get_gc(conv),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2348 (char *)gaim_conversation_get_name(conv),
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2349 GAIM_TYPING);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2350
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2351 if (timeout)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2352 gaim_conv_im_set_type_again(im, time(NULL) + timeout);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2353 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2354 gaim_conv_im_set_type_again(im, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2355 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2356 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2357
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2358 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2359 update_typing_icon(GaimConversation *conv)
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2360 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2361 GaimGtkWindow *gtkwin;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2362 GaimConvIm *im = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2363 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2364
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2365 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2366
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2367 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2368 im = GAIM_CONV_IM(conv);
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2369
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2370 if(gtkwin->menu.typing_icon) {
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2371 gtk_widget_destroy(gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2372 gtkwin->menu.typing_icon = NULL;
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2373 }
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2374 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
2375 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2376 gtk_image_menu_item_set_image(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2377 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2378 gtk_image_new_from_stock(GAIM_STOCK_TYPING,
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2379 GTK_ICON_SIZE_MENU));
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2380 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2381 _("User is typing..."), NULL);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2382 } 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
2383 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2384 gtk_image_menu_item_set_image(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2385 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2386 gtk_image_new_from_stock(GAIM_STOCK_TYPED,
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2387 GTK_ICON_SIZE_MENU));
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2388 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2389 _("User has typed something and paused"), NULL);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2390 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2391
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2392 if(gtkwin->menu.typing_icon) {
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2393 gtk_menu_item_set_right_justified(
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2394 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2395 gtk_widget_show_all(gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2396 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar),
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2397 gtkwin->menu.typing_icon);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2398 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2399 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2400
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2401 static gboolean
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2402 update_send_as_selection(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2403 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2404 GaimAccount *account;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2405 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2406 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2407 GtkWidget *menu;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2408 GList *child;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2409
7090
58fa35e8f2a0 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2410 if (g_list_find(gaim_get_windows(), win) == NULL)
58fa35e8f2a0 [gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents: 7089
diff changeset
2411 return FALSE;
4849
21123cba7a70 [gaim-migrate @ 5174]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
2412
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2413 conv = gaim_conv_window_get_active_conversation(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2414
5860
27f5a177b7fc [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2415 if (conv == NULL)
27f5a177b7fc [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2416 return FALSE;
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2417
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2418 account = gaim_conversation_get_account(conv);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2419 gtkwin = GAIM_GTK_WINDOW(win);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2420
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2421 if (gtkwin->menu.send_as == NULL)
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2422 return FALSE;
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2423
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2424 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2425
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2426 menu = gtk_menu_item_get_submenu(
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2427 GTK_MENU_ITEM(gtkwin->menu.send_as));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2428
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2429 for (child = gtk_container_get_children(GTK_CONTAINER(menu));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2430 child != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2431 child = child->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2432
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2433 GtkWidget *item = child->data;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2434 GaimAccount *item_account = g_object_get_data(G_OBJECT(item),
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2435 "gaim_account");
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2436
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2437 if (account == item_account) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2438 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2439 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2440 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2441 }
6030
0e20bf585317 [gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents: 6016
diff changeset
2442
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2443 return FALSE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2444 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2445
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2446 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2447 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2448 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2449 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2450 GtkWidget *menu;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2451 GtkWidget *menuitem;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2452 GList *gcs;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2453 GList *convs;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2454 GSList *group = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2455 gboolean first_offline = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2456 gboolean found_online = FALSE;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2457 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2458
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2459 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2460
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2461 if (gtkwin->menu.send_as != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2462 gtk_widget_destroy(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2463
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2464 /* See if we have > 1 connection active. */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2465 if (g_list_length(gaim_connections_get_all()) < 2) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2466 /* Now make sure we don't have any Offline entries. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2467 gboolean found_offline = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2468
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2469 for (convs = gaim_get_conversations();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2470 convs != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2471 convs = convs->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2472
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2473 GaimConversation *conv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2474 GaimAccount *account;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2475
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2476 conv = (GaimConversation *)convs->data;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2477 account = gaim_conversation_get_account(conv);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2478
6495
02f5ce189666 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
2479 if (account != NULL && account->gc == NULL) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2480 found_offline = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2481 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2482 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2483 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2484
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2485 if (!found_offline) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2486 gtkwin->menu.send_as = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2487 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2488 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2489 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2490
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2491 /* Build the Send As menu */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2492 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2493 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2494
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2495 menu = gtk_menu_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2496
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2497 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2498 gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2499 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
2500
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2501 gtk_widget_show(menu);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2502
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2503 /* Fill it with entries. */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2504 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) {
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2505
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2506 GaimConnection *gc;
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2507 GaimAccount *account;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2508 GtkWidget *box;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2509 GtkWidget *label;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2510 GtkWidget *image;
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2511 GdkPixbuf *pixbuf, *scale;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2512
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2513 found_online = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2514
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2515 gc = (GaimConnection *)gcs->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2516
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2517 /* Create a pixmap for the protocol icon. */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2518 pixbuf = create_prpl_icon(gc->account);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2519 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
2520
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2521 /* Now convert it to GtkImage */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2522 if (pixbuf == NULL)
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2523 image = gtk_image_new();
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2524 else
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2525 image = gtk_image_new_from_pixbuf(scale);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2526
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2527 gtk_size_group_add_widget(sg, image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2528
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2529 g_object_unref(G_OBJECT(scale));
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2530 g_object_unref(G_OBJECT(pixbuf));
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2531
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2532 account = gaim_connection_get_account(gc);
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2533
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2534 /* Make our menu item */
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2535 menuitem = gtk_radio_menu_item_new_with_label(group,
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2536 gaim_account_get_username(account));
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2537 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
2538
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2539 /* Do some evil, see some evil, speak some evil. */
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2540 box = gtk_hbox_new(FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2541
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2542 label = gtk_bin_get_child(GTK_BIN(menuitem));
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2543 g_object_ref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2544 gtk_container_remove(GTK_CONTAINER(menuitem), label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2545
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2546 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2547 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2548
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2549 g_object_unref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2550
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2551 gtk_container_add(GTK_CONTAINER(menuitem), box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2552
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2553 gtk_widget_show(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2554 gtk_widget_show(image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2555 gtk_widget_show(box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2556
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2557 /* Set our data and callbacks. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2558 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2559 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2560
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2561 g_signal_connect(G_OBJECT(menuitem), "activate",
4673
7c6059fb186b [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2562 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2563
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2564 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2565 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2566 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2567
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2568 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2569 * 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
2570 * (signed off accounts with a window open).
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2571 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2572 for (convs = gaim_get_conversations();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2573 convs != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2574 convs = convs->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2575
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2576 GaimConversation *conv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2577 GaimAccount *account;
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2578 GtkWidget *box;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2579 GtkWidget *label;
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2580 GtkWidget *image;
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2581 GdkPixbuf *pixbuf, *scale;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2582
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2583 conv = (GaimConversation *)convs->data;
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2584
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2585 if (conv == deleted_conv)
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2586 continue;
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2587
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2588 account = gaim_conversation_get_account(conv);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2589
6495
02f5ce189666 [gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
2590 if (account != NULL && account->gc == NULL) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2591 if (first_offline && found_online) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2592 menuitem = gtk_separator_menu_item_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2593 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2594 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2595
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2596 first_offline = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2597 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2598
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2599 /* Create a pixmap for the protocol icon. */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2600 pixbuf = create_prpl_icon(account);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2601 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2602 GDK_INTERP_BILINEAR);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2603
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2604 /* Now convert it to GtkImage */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2605 if (pixbuf == NULL)
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2606 image = gtk_image_new();
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2607 else
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2608 image = gtk_image_new_from_pixbuf(scale);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2609
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2610 gtk_size_group_add_widget(sg, image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2611
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2612 if (scale != NULL) g_object_unref(scale);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2613 if (pixbuf != NULL) g_object_unref(pixbuf);
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2614
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2615 /* Make our menu item */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2616 menuitem = gtk_radio_menu_item_new_with_label(group,
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2617 account->username);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2618 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
2619
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2620 /* Do some evil, see some evil, speak some evil. */
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2621 box = gtk_hbox_new(FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2622
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2623 label = gtk_bin_get_child(GTK_BIN(menuitem));
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2624 g_object_ref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2625 gtk_container_remove(GTK_CONTAINER(menuitem), label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2626
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2627 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2628 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2629
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2630 g_object_unref(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2631
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2632 gtk_container_add(GTK_CONTAINER(menuitem), box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2633
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2634 gtk_widget_show(label);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2635 gtk_widget_show(image);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2636 gtk_widget_show(box);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2637
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2638 gtk_widget_set_sensitive(menuitem, FALSE);
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2639 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4674
c06c9e981592 [gaim-migrate @ 4985]
Nathan Walp <nwalp@pidgin.im>
parents: 4673
diff changeset
2640 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2641
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2642 g_signal_connect(G_OBJECT(menuitem), "activate",
5902
6f9b6b4037b0 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
2643 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4786
2ff61b44bd1d [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2644
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2645 gtk_widget_show(menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2646 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2647 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2648 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2649
4669
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2650 g_object_unref(sg);
879e30ac4cf3 [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2651
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2652 gtk_widget_show(gtkwin->menu.send_as);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2653 update_send_as_selection(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2654 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2655
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2656 static GList *
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2657 generate_invite_user_names(GaimConnection *gc)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2658 {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2659 GaimBlistNode *gnode,*cnode,*bnode;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2660 static GList *tmp = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2661
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2662 if (tmp)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2663 g_list_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2664
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2665 tmp = g_list_append(NULL, "");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2666
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2667 if (gc != NULL) {
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2668 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2669 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2670 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2671 for(cnode = gnode->child; cnode; cnode = cnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2672 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2673 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2674 for(bnode = cnode->child; bnode; bnode = bnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2675 GaimBuddy *buddy;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2676
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2677 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2678 continue;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2679
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2680 buddy = (GaimBuddy *)bnode;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2681
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2682 if (buddy->account == gc->account &&
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2683 GAIM_BUDDY_IS_ONLINE(buddy))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2684 tmp = g_list_append(tmp, buddy->name);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2685 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2686 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2687 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2688 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2689
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2690 return tmp;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2691 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2692
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2693 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2694 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2695 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2696 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2697 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2698 GaimConvChat *chat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2699 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2700 GtkListStore *ls;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2701
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2702 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2703 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2704 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2705
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2706 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
2707
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2708 gtk_list_store_append(ls, &iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2709 gtk_list_store_set(ls, &iter, 0,
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2710 (gaim_conv_chat_is_user_ignored(chat, name) ? "X" : " "),
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2711 1, name, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2712 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2713 GTK_SORT_ASCENDING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2714 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2715
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2716 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2717 tab_complete(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2718 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2719 GaimGtkConversation *gtkconv;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2720 GaimConvChat *chat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2721 GtkTextIter cursor, word_start, start_buffer;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2722 int start;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2723 int most_matched = -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2724 char *entered, *partial = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2725 char *text;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2726 GList *matches = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2727 GList *nicks = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2728
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2729 gtkconv = GAIM_GTK_CONVERSATION(conv);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2730 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2731
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2732 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2733 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2734 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2735
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2736 word_start = cursor;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2737
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2738 /* if there's nothing there just return */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2739 if (!gtk_text_iter_compare(&cursor, &start_buffer))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2740 return;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2741
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2742 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2743 &cursor, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2744
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2745 /* 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
2746 start = strlen(text) - 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2747
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2748 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2749 gtk_text_iter_backward_chars(&word_start, 2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2750
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2751 /* find the start of the word that we're tabbing */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2752 while (start >= 0 && text[start] != ' ') {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2753 gtk_text_iter_backward_char(&word_start);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2754 start--;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2755 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2756
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2757 g_free(text);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2758
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2759 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2760 &cursor, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2761
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
2762 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2763 if (strlen(entered) >= 2 &&
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2764 !strncmp(": ", entered + strlen(entered) - 2, 2)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2765
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2766 entered[strlen(entered) - 2] = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2767 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2768 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2769
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2770 if (!strlen(entered)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2771 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2772 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2773 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2774
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2775 for (nicks = gaim_conv_chat_get_users(chat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2776 nicks != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2777 nicks = nicks->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2778
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2779 char *nick = nicks->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2780 /* this checks to see if the current nick could be a completion */
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2781 if (g_ascii_strncasecmp(nick, entered, strlen(entered))) {
4621
c1d2f34bf634 [gaim-migrate @ 4912]
Christian Hammond <chipx86@chipx86.com>
parents: 4608
diff changeset
2782 if (*nick != '+' && *nick != '@' && *nick != '%')
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2783 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2784
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2785 if (g_ascii_strncasecmp(nick + 1, entered, strlen(entered))) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2786 if (nick[0] != '@' || nick[1] != '+')
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2787 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2788
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2789 if (g_ascii_strncasecmp(nick + 2, entered, strlen(entered)))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2790 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2791 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2792 nick += 2;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2793 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2794 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2795 nick++;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2796 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2797
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2798 /* if we're here, it's a possible completion */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2799
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2800 /* if we're doing old-style, just fill in the completion */
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
2801 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2802 gtk_text_buffer_delete(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2803 &word_start, &cursor);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2804
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2805 if (strlen(nick) == strlen(entered)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2806 nicks = (nicks->next
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2807 ? nicks->next
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2808 : gaim_conv_chat_get_users(chat));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2809
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2810 nick = nicks->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2811
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2812 if (*nick == '@') nick++;
4621
c1d2f34bf634 [gaim-migrate @ 4912]
Christian Hammond <chipx86@chipx86.com>
parents: 4608
diff changeset
2813 if (*nick == '%') nick++;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2814 if (*nick == '+') nick++;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2815 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2816
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2817 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2818 &start_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2819 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2820 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2821
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2822 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2823 char *tmp = g_strdup_printf("%s: ", nick);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2824 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2825 tmp, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2826 g_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2827 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2828 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2829 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2830 nick, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2831
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2832 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2833
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2834 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2835 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2836
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2837 /* we're only here if we're doing new style */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2838 if (most_matched == -1) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2839 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2840 * this will only get called once, since from now
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2841 * on most_matched is >= 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2842 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2843 most_matched = strlen(nick);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2844 partial = g_strdup(nick);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2845 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2846 else if (most_matched) {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2847 while (g_ascii_strncasecmp(nick, partial, most_matched))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2848 most_matched--;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2849
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2850 partial[most_matched] = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2851 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2852
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2853 matches = g_list_append(matches, nick);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2854 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2855
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2856 /* we're only here if we're doing new style */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2857
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2858 /* if there weren't any matches, return */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2859 if (!matches) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2860 /* if matches isn't set partials won't be either */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2861 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2862 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2863 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2864
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2865 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2866
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2867 if (!matches->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2868 /* there was only one match. fill it in. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2869 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2870 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2871 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2872
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2873 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2874 char *tmp = g_strdup_printf("%s: ", (char *)matches->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2875 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2876 g_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2877 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2878 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2879 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2880 matches->data, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2881
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2882 matches = g_list_remove(matches, matches->data);
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 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2885 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2886 * there were lots of matches, fill in as much as possible
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2887 * and display all of them
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2888 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2889 char *addthis = g_malloc0(1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2890
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2891 while (matches) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2892 char *tmp = addthis;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2893 addthis = g_strconcat(tmp, matches->data, " ", NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2894 g_free(tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2895 matches = g_list_remove(matches, matches->data);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2896 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2897
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
2898 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2899 time(NULL));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2900 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2901 g_free(addthis);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2902 }
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 g_free(entered);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2905 g_free(partial);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2906 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2907
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2908 static void
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2909 save_convo(GtkWidget *save, GaimConversation *c)
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2910 {
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2911 char buf[BUF_LONG];
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2912 GtkWidget *window;
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2913
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2914 window = gtk_file_selection_new(_("Gaim - Save Conversation"));
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2915
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2916 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log",
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7242
diff changeset
2917 gaim_home_dir(), gaim_normalize(c->account, c->name));
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2918 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2919 g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2920 "gaim_conversation", c);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2921 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
6038
aecce6884f79 [gaim-migrate @ 6488]
Ka-Hing Cheung <khc@pidgin.im>
parents: 6033
diff changeset
2922 "clicked", G_CALLBACK(do_check_save_convo), window);
5934
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2923 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2924 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2925 gtk_widget_show(window);
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2926 }
3399514399cf [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2927
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2928 static GtkItemFactoryEntry menu_items[] =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2929 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2930 /* Conversation menu */
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
2931 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2932
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
2933 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2934 "<StockItem>", GTK_STOCK_SAVE_AS },
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
2935 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL },
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
2936 { N_("/Conversation/Search..."), NULL, menu_search_cb, 0, "<StockItem>", GTK_STOCK_FIND },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2937
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2938 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2939
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
2940 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
2941 0, NULL },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2942 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2943 "<StockItem>", GAIM_STOCK_EDIT },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2944 { N_("/Conversation/_Get Info..."), NULL, menu_get_info_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2945 "<StockItem>", GAIM_STOCK_INFO },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2946 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2947 "<StockItem>", GAIM_STOCK_INVITE },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2948
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
2949 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2950
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
2951 { N_("/Conversation/Insert _URL..."), NULL, menu_insert_link_cb, 0,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2952 "<StockItem>", GAIM_STOCK_LINK },
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
2953 { N_("/Conversation/Insert _Image..."), NULL, menu_insert_image_cb, 0,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2954 "<StockItem>", GAIM_STOCK_IMAGE },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2955
5907
b2812113a4a6 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
2956 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2957
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2958 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2959 "<StockItem>", GAIM_STOCK_WARN },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2960 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2961 "<StockItem>", GAIM_STOCK_BLOCK },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2962 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2963 "<StockItem>", GTK_STOCK_ADD },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2964 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2965 "<StockItem>", GTK_STOCK_REMOVE },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2966
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2967 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" },
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2968
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
2969 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2970 "<StockItem>", GTK_STOCK_CLOSE },
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2971
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2972 /* Options */
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
2973 { N_("/_Options"), NULL, NULL, 0, "<Branch>" },
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4578
diff changeset
2974 { 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
2975 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" },
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
2976 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" },
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2977 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2978
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
2979 static const int menu_item_count =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2980 sizeof(menu_items) / sizeof(*menu_items);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2981
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2982 static char *
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2983 item_factory_translate_func (const char *path, gpointer func_data)
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2984 {
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
2985 return _((char *)path);
4602
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2986 }
a030b07555d2 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2987
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2988 static GtkWidget *
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
2989 setup_menubar(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2990 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2991 GaimGtkWindow *gtkwin;
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5114
diff changeset
2992 GtkAccelGroup *accel_group;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2993 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2994
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
2995 accel_group = gtk_accel_group_new ();
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
2996 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
2997 g_object_unref (accel_group);
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5114
diff changeset
2998
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2999 gtkwin->menu.item_factory =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3000 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3001
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3002 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3003 item_factory_translate_func,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3004 NULL, NULL);
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3005
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3006 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
3007 menu_items, win);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7415
diff changeset
3008 g_signal_connect(G_OBJECT(accel_group), "accel-changed",
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7415
diff changeset
3009 G_CALLBACK(gaim_gtk_save_accels_cb), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3010
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3011
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3012 gtkwin->menu.menubar =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3013 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>");
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3014
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3015
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3016 gtkwin->menu.view_log =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3017 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
3018 N_("/Conversation/View Log"));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3019 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3020
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3021 gtkwin->menu.add_pounce =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3022 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3023 N_("/Conversation/Add Buddy Pounce..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3024
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3025 gtkwin->menu.alias =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3026 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3027 N_("/Conversation/Alias..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3028
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3029 gtkwin->menu.get_info =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3030 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3031 N_("/Conversation/Get Info..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3032
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3033 gtkwin->menu.invite =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3034 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3035 N_("/Conversation/Invite..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3036
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3037 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3038
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3039 gtkwin->menu.insert_link =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3040 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3041 N_("/Conversation/Insert URL..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3042
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3043 gtkwin->menu.insert_image =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3044 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3045 N_("/Conversation/Insert Image..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3046
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3047 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3048
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3049 gtkwin->menu.warn =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3050 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3051 N_("/Conversation/Warn..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3052
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3053 gtkwin->menu.block =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3054 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3055 N_("/Conversation/Block..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3056
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3057 gtkwin->menu.add =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3058 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3059 N_("/Conversation/Add..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3060
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3061 gtkwin->menu.remove =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3062 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3063 N_("/Conversation/Remove..."));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3064
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3065 /* --- */
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3066
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3067 gtkwin->menu.logging =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3068 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3069 N_("/Options/Enable Logging"));
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3070 gtkwin->menu.sounds =
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3071 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
3072 N_("/Options/Enable Sounds"));
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3073 gtkwin->menu.show_formatting_toolbar =
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3074 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3075 N_("/Options/Show Formatting Toolbar"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3076
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3077 generate_send_as_items(win, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3078
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3079 gtk_widget_show(gtkwin->menu.menubar);
4931
4c41a8550423 [gaim-migrate @ 5265]
Sean Egan <seanegan@pidgin.im>
parents: 4896
diff changeset
3080
4c41a8550423 [gaim-migrate @ 5265]
Sean Egan <seanegan@pidgin.im>
parents: 4896
diff changeset
3081 return gtkwin->menu.menubar;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3082 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3083
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3084 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3085 setup_im_buttons(GaimConversation *conv, GtkWidget *parent)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3086 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3087 GaimConnection *gc;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3088 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3089 GaimGtkImPane *gtkim;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3090 GaimConversationType type = GAIM_CONV_IM;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3091
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3092 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3093 gtkim = gtkconv->u.im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3094 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3095
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3096 /* From right to left... */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3097
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3098 /* Send button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3099 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3100 GAIM_STOCK_SEND, type);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3101 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3102
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3103 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3104
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3105 /* Separator */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3106 if (gtkim->sep2 != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3107 gtk_widget_destroy(gtkim->sep2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3108
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3109 gtkim->sep2 = gtk_vseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3110 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3111 gtk_widget_show(gtkim->sep2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3112
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3113 /* Now, um, just kind of all over the place. Huh? */
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 /* Add button */
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3116 if (gaim_find_buddy(gaim_conversation_get_account(conv),
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3117 gaim_conversation_get_name(conv)) == NULL) {
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3118
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3119 gtkim->add = gaim_gtk_change_text(_("Add"), gtkim->add,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3120 GTK_STOCK_ADD, type);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3121 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->add,
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3122 _("Add the user to your buddy list"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3123 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3124 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3125 gtkim->add = gaim_gtk_change_text(_("Remove"), gtkim->add,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3126 GTK_STOCK_REMOVE, type);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3127 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->add,
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3128 _("Remove the user from your buddy list"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3129 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3130
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3131 gtk_box_pack_start(GTK_BOX(parent), gtkim->add,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3132 FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3133
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3134 /* Warn button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3135 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3136 GAIM_STOCK_WARN, type);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3137 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0);
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3138 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn,
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3139 _("Warn the user"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3140
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3141 /* Info button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3142 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3143 GAIM_STOCK_INFO, type);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3144 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3145 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info,
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3146 _("Get the user's information"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3147
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3148 /* Block button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3149 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3150 GAIM_STOCK_BLOCK, type);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3151 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3152 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block,
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3153 _("Block the user"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3154
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3155 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3156 gtk_button_set_relief(GTK_BUTTON(gtkim->add), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3157 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3158 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3159 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3160
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3161 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3162 gtk_size_group_add_widget(gtkconv->sg, gtkim->add);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3163 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3164 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3165 gtk_size_group_add_widget(gtkconv->sg, gtkim->block);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3166
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3167 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3168 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2);
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3169 gtk_box_reorder_child(GTK_BOX(parent), gtkim->add, 3);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3170 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 4);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3171
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3172 gaim_gtkconv_update_buttons_by_protocol(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3173
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3174 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3175 G_CALLBACK(send_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3176 g_signal_connect(G_OBJECT(gtkconv->info), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3177 G_CALLBACK(info_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3178 g_signal_connect(G_OBJECT(gtkim->warn), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3179 G_CALLBACK(warn_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3180 g_signal_connect(G_OBJECT(gtkim->block), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3181 G_CALLBACK(block_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3182 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3183
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3184 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3185 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3186 {
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3187 GaimConnection *gc;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3188 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3189 GaimGtkChatPane *gtkchat;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3190 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3191 GtkWidget *sep;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3192
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3193 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3194 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3195 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3196 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3197
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3198 /* Send button */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3199 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3200 GAIM_STOCK_SEND, GAIM_CONV_CHAT);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3201 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
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 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3204
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3205 /* Separator */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3206 sep = gtk_vseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3207 gtk_box_pack_end(GTK_BOX(parent), sep, FALSE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3208 gtk_widget_show(sep);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3209
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3210 /* Invite */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3211 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3212 GAIM_STOCK_INVITE, GAIM_CONV_CHAT);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3213 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3214 _("Invite a user"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3215 gtk_box_pack_end(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3216
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3217 /* Set the relief on these. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3218 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3219 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3220
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3221 /* Callbacks */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3222 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3223 G_CALLBACK(send_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3224 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3225 G_CALLBACK(invite_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3226 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3227
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3228 static GtkWidget *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3229 build_conv_toolbar(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3230 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3231 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3232 GtkWidget *vbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3233 GtkWidget *hbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3234 GtkWidget *button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3235 GtkWidget *sep;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3236 GtkSizeGroup *sg;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3237
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3238 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3239
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3240 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3241
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3242 vbox = gtk_vbox_new(FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3243 sep = gtk_hseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3244 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3245
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3246 hbox = gtk_hbox_new(FALSE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3247 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3248
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3249 /* Bold */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3250 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3251 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3252 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3253 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Bold"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3254
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3255 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3256 G_CALLBACK(do_bold), gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3257
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3258 gtkconv->toolbar.bold = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3259
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3260 /* Italic */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3261 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3262 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3263 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3264 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Italic"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3265
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3266 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3267 G_CALLBACK(do_italic), gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3268
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3269 gtkconv->toolbar.italic = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3270
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3271 /* Underline */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3272 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3273 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3274 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3275 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Underline"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3276
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3277 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3278 G_CALLBACK(do_underline), gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3279
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3280 gtkconv->toolbar.underline = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3281
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3282 /* Sep */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3283 sep = gtk_vseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3284 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3285
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3286 /* Increase font size */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3287 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_BIGGER);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3288 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3289 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3290 gtk_tooltips_set_tip(gtkconv->tooltips, button,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3291 _("Larger font size"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3292
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3293 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3294 G_CALLBACK(do_big), gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3295
5049
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
3296 gtkconv->toolbar.larger_size = button;
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
3297
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3298 /* Normal font size */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3299 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_NORMAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3300 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3301 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3302 gtk_tooltips_set_tip(gtkconv->tooltips, button,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3303 _("Normal font size"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3304
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3305 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3306 G_CALLBACK(do_normal), gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3307
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3308 gtkconv->toolbar.normal_size = button;
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 /* Decrease font size */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3311 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_SMALLER);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3312 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3313 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3314 gtk_tooltips_set_tip(gtkconv->tooltips, button,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3315 _("Smaller font size"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3316
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3317 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3318 G_CALLBACK(do_small), gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3319
5049
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
3320 gtkconv->toolbar.smaller_size = button;
685f506a6f5b [gaim-migrate @ 5397]
xOr
parents: 5046
diff changeset
3321
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3322 /* Sep */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3323 sep = gtk_vseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3324 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3325
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3326 /* Font Face */
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3327
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3328 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_SELECT_FONT);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3329 gtk_size_group_add_widget(sg, button);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3330 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3331 gtk_tooltips_set_tip(gtkconv->tooltips, button,
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3332 _("Font Face"), NULL);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3333
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3334 g_signal_connect(G_OBJECT(button), "clicked",
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3335 G_CALLBACK(toggle_font), conv);
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3336
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3337 gtkconv->toolbar.font = button;
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3338
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3339 /* Foreground Color */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3340 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_FGCOLOR);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3341 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3342 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3343 gtk_tooltips_set_tip(gtkconv->tooltips, button,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3344 _("Foreground font color"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3345
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3346 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3347 G_CALLBACK(toggle_fg_color), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3348
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3349 gtkconv->toolbar.fgcolor = button;
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 /* Background Color */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3352 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_BGCOLOR);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3353 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3354 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3355 gtk_tooltips_set_tip(gtkconv->tooltips, button,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3356 _("Background color"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3357
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3358 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3359 G_CALLBACK(toggle_bg_color), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3360
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3361 gtkconv->toolbar.bgcolor = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3362
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3363 /* Sep */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3364 sep = gtk_vseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3365 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3366
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3367 /* Insert IM Image */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3368 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_IMAGE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3369 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3370 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3371 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert image"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3372
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3373 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3374 G_CALLBACK(insert_image_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3375
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3376 gtkconv->toolbar.image = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3377
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3378 /* Insert Link */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3379 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_LINK);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3380 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3381 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3382 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert link"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3383
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3384 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3385 G_CALLBACK(insert_link_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3386
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3387 gtkconv->toolbar.link = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3388
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3389 /* Insert Smiley */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3390 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_SMILEY);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3391 gtk_size_group_add_widget(sg, button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3392 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3393 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert smiley"), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3394
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3395 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3396 G_CALLBACK(insert_smiley_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3397
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3398 gtkconv->toolbar.smiley = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3399
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 sep = gtk_hseparator_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3402 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3403
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3404 gtk_widget_show_all(vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3405
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3406 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar"))
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3407 gtk_widget_hide(vbox);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
3408
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3409 return vbox;
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3412 static GtkWidget *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3413 setup_chat_pane(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3414 {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3415 GaimPluginProtocolInfo *prpl_info = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3416 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3417 GaimGtkChatPane *gtkchat;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3418 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3419 GtkWidget *vpaned, *hpaned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3420 GtkWidget *vbox, *hbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3421 GtkWidget *lbox, *bbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3422 GtkWidget *label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3423 GtkWidget *sw2;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3424 GtkWidget *list;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3425 GtkWidget *button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3426 GtkWidget *frame;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3427 GtkListStore *ls;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3428 GtkCellRenderer *rend;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3429 GtkTreeViewColumn *col;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3430
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3431 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3432 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3433 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3434
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3435 /* Setup the outer pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3436 vpaned = gtk_vpaned_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3437 gtk_widget_show(vpaned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3438
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3439 /* Setup the top part of the pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3440 vbox = gtk_vbox_new(FALSE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3441 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3442 gtk_widget_show(vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3443
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3444 if (gc != NULL)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3445 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3446
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3447 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC)
4359
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 hbox = gtk_hbox_new(FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3450 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3451 gtk_widget_show(hbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3452
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3453 label = gtk_label_new(_("Topic:"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3454 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3455 gtk_widget_show(label);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3456
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3457 gtkchat->topic_text = gtk_entry_new();
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
3458 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3459 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3460 gtk_widget_show(gtkchat->topic_text);
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3463 /* Setup the horizontal pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3464 hpaned = gtk_hpaned_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3465 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3466 gtk_widget_show(hpaned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3467
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3468 /* Setup the scrolled window to put gtkimhtml in. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3469 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3470 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3471 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3472 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3473 GTK_SHADOW_IN);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3474 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3475
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3476 gtk_widget_set_size_request(gtkconv->sw,
5550
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3477 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"),
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3478 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height"));
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3479
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3480 gtk_widget_show(gtkconv->sw);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3481
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3482 /* Setup gtkihmtml. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3483 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3484 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3485
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3486 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3487 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3488
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3489 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3490 G_CALLBACK(entry_stop_rclick_cb), NULL);
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3491 g_signal_connect(G_OBJECT(gtkconv->imhtml), "button_release_event",
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3492 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3493
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3494 gaim_setup_imhtml(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3495
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3496 gtk_widget_show(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3497
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3498 /* Build the right pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3499 lbox = gtk_vbox_new(FALSE, 5);
4409
a2526adf0f4b [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3500 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3501 gtk_widget_show(lbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3502
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3503 /* Setup the label telling how many people are in the room. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3504 gtkchat->count = gtk_label_new(_("0 people in room"));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3505 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3506 gtk_widget_show(gtkchat->count);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3507
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3508 /* Setup the list of users. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3509 sw2 = gtk_scrolled_window_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3510 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3511 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3512 gtk_box_pack_start(GTK_BOX(lbox), sw2, TRUE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3513 gtk_widget_show(sw2);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3514
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3515 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3516 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3517 GTK_SORT_ASCENDING);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3518
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3519 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3520
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3521 rend = gtk_cell_renderer_text_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3522 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3523 "text", 0, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3524 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3525
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3526 g_signal_connect(G_OBJECT(list), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3527 G_CALLBACK(right_click_chat_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3528
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3529 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3530
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3531 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3532 "text", 1, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3533 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3534
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3535 #if 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3536 g_signal_connect(G_OBJECT(list), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3537 G_CALLBACK(right_click_chat), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3538 #endif
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 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3541
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3542 gtk_widget_set_size_request(list, 150, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3543
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3544 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3545 gtk_widget_show(list);
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 gtkchat->list = list;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3548
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3549 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), list);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3550
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3551 /* Setup the user list toolbar. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3552 bbox = gtk_hbox_new(TRUE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3553 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3554 gtk_widget_show(bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3555
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3556 /* IM */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3557 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3558 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3559 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3560 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
3561 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3562 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3563 G_CALLBACK(im_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3564
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3565 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3566
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3567 /* Ignore */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3568 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3569 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3570 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3571 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
3572 gtk_tooltips_set_tip(gtkconv->tooltips, button,
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3573 _("Ignore the user"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3574 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3575 G_CALLBACK(ignore_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3576 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3577
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3578 /* Info */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3579 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3580 GAIM_BUTTON_VERTICAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3581 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3582 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3583 gtk_tooltips_set_tip(gtkconv->tooltips, button,
4370
8a804f16341c [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3584 _("Get the user's information"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3585 g_signal_connect(G_OBJECT(button), "clicked",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3586 G_CALLBACK(info_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3587
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3588 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3589
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3590 gtkconv->info = button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3591
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3592 /* Build the toolbar. */
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3593 vbox = gtk_vbox_new(FALSE, 5);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3594 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3595 gtk_widget_show(vbox);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3596
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3597 gtkconv->toolbar.toolbar = build_conv_toolbar(conv);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3598 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar.toolbar,
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3599 FALSE, FALSE, 0);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3600
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3601 /* Setup the entry widget. */
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3602 frame = gtk_frame_new(NULL);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3603 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3604 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3605 gtk_widget_show(frame);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3606
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3607 gtkconv->entry_buffer = gtk_text_buffer_new(NULL);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3608 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3609 gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3610
5105
3565a4c4de6a [gaim-migrate @ 5468]
David J. Brigada <brigada@prism.net>
parents: 5103
diff changeset
3611 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3612 gtk_widget_set_size_request(gtkconv->entry, -1,
5550
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3613 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"),
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3614 25));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3615
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3616 /* Connect the signal handlers. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3617 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3618 G_CALLBACK(entry_key_pressed_cb_1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3619 gtkconv->entry_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3620 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3621 G_CALLBACK(entry_stop_rclick_cb), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3622 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3623 G_CALLBACK(entry_key_pressed_cb_2), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3624
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3625 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
3626 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3627
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3628 gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(gtkconv->entry));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3629 gtk_widget_show(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3630
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3631 /* Setup the bottom button box. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3632 gtkconv->bbox = gtk_hbox_new(FALSE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3633 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3634 gtk_widget_show(gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3635
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3636 setup_chat_buttons(conv, gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3637
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3638 return vpaned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3639 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3640
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3641 static GtkWidget *
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3642 setup_im_pane(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3643 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3644 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3645 GaimGtkImPane *gtkim;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3646 GtkWidget *paned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3647 GtkWidget *vbox;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3648 GtkWidget *vbox2;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3649 GtkWidget *frame;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3650
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3651 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3652 gtkim = gtkconv->u.im;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3653
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3654 /* Setup the outer pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3655 paned = gtk_vpaned_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3656 gtk_widget_show(paned);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3657
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3658 /* Setup the top part of the pane. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3659 vbox = gtk_vbox_new(FALSE, 5);
4409
a2526adf0f4b [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3660 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3661 gtk_widget_show(vbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3662
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3663 /* Setup the gtkimhtml widget. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3664 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3665 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3666 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3667 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3668 GTK_SHADOW_IN);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3669 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
3670
5550
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3671 gtk_widget_set_size_request(gtkconv->sw,
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3672 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"),
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3673 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3674 gtk_widget_show(gtkconv->sw);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3675
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3676 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3677 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3678
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3679 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3680 G_CALLBACK(entry_stop_rclick_cb), NULL);
6057
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3681 g_signal_connect(G_OBJECT(gtkconv->imhtml), "button_release_event",
9d9131805daa [gaim-migrate @ 6507]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
3682 G_CALLBACK(refocus_entry_cb), gtkconv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3683
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3684 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3685 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3686
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3687 gaim_setup_imhtml(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3688
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3689 gtk_widget_show(gtkconv->imhtml);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3690
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3691 vbox2 = gtk_vbox_new(FALSE, 5);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3692 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3693 gtk_widget_show(vbox2);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3694
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3695 /* Build the toolbar. */
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3696 gtkconv->toolbar.toolbar = build_conv_toolbar(conv);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3697 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar.toolbar,
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3698 FALSE, FALSE, 0);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3699
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3700 /* Setup the entry widget. */
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3701 frame = gtk_frame_new(NULL);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3702 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3703 gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3704 gtk_widget_show(frame);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3705
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3706 gtkconv->entry_buffer = gtk_text_buffer_new(NULL);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3707 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3708 gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer);
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3709
5105
3565a4c4de6a [gaim-migrate @ 5468]
David J. Brigada <brigada@prism.net>
parents: 5103
diff changeset
3710 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR);
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3711 gtk_widget_set_size_request(gtkconv->entry, -1,
5550
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3712 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"),
1938d1e59cf8 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3713 25));
4963
06be8a0c28e9 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3714
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3715 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3716 G_CALLBACK(entry_key_pressed_cb_1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3717 gtkconv->entry_buffer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3718 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3719 G_CALLBACK(entry_key_pressed_cb_2), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3720 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3721 G_CALLBACK(entry_stop_rclick_cb), NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3722
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3723 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3724 G_CALLBACK(insert_text_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3725 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3726 G_CALLBACK(delete_text_cb), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3727
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3728 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
3729 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3730
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3731 gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(gtkconv->entry));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3732 gtk_widget_show(gtkconv->entry);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3733
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3734 gtkconv->bbox = gtk_hbox_new(FALSE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3735 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3736 gtk_widget_show(gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3737
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3738 setup_im_buttons(conv, gtkconv->bbox);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3739
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3740 return paned;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3741 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3742
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3743 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3744 move_next_tab(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3745 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3746 GaimConversation *next_conv = NULL;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3747 GaimConvWindow *win;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3748 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3749 int index, i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3750
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3751 win = gaim_conversation_get_window(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3752 index = gaim_conversation_get_index(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3753
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3754 /* First check the tabs after this position. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3755 for (l = g_list_nth(gaim_conv_window_get_conversations(win), index);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3756 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3757 l = l->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3758
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3759 next_conv = (GaimConversation *)l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3760
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3761 if (gaim_conversation_get_unseen(next_conv) > 0)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3762 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3763
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3764 next_conv = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3765 }
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 if (next_conv == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3768
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3769 /* Now check before this position. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3770 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3771 l != NULL && i < index;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3772 l = l->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3773
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3774 next_conv = (GaimConversation *)l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3775
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3776 if (gaim_conversation_get_unseen(next_conv) > 0)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3777 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3778
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3779 next_conv = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3780 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3781
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3782 if (next_conv == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3783 /* Okay, just grab the next conversation tab. */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3784 if (index == gaim_conv_window_get_conversation_count(win) - 1)
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3785 next_conv = gaim_conv_window_get_conversation_at(win, 0);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3786 else
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3787 next_conv = gaim_conv_window_get_conversation_at(win, index + 1);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3788 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3789 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3790
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3791 if (next_conv != NULL && next_conv != conv) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3792 gaim_conv_window_switch_conversation(win,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3793 gaim_conversation_get_index(next_conv));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3794 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3795 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3796
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3797 static void
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3798 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
3799 GtkSelectionData *sd, guint info, guint t,
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3800 GaimConversation *conv)
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3801 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3802 GaimConvWindow *win = conv->window;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3803 GaimConversation *c;
7694
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3804 gchar* uri;
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3805
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3806 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) {
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
3807 GaimBlistNode *n = NULL;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3808 GaimBuddy *b;
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
3809 memcpy(&n, sd->data, sizeof(n));
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3810
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3811 if (GAIM_BLIST_NODE_IS_CONTACT(n))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3812 b = gaim_contact_get_priority_buddy((GaimContact*)n);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3813 else if (GAIM_BLIST_NODE_IS_BUDDY(n))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3814 b = (GaimBuddy*)n;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3815 else
4781
bd34267e7c56 [gaim-migrate @ 5101]
Sean Egan <seanegan@pidgin.im>
parents: 4770
diff changeset
3816 return;
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3817
7089
83868f616e34 [gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents: 7078
diff changeset
3818 c = gaim_conversation_new(GAIM_CONV_IM, b->account, b->name);
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3819
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3820 gaim_conv_window_add_conversation(win, c);
4702
49006c93f70c [gaim-migrate @ 5013]
Sean Egan <seanegan@pidgin.im>
parents: 4689
diff changeset
3821 }
7694
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3822 if (info == TARGET_NETSCAPE_URL)
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3823 {
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3824 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3825 gchar* p=(gchar*) sd->data;
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3826 gchar* q;
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3827 gchar* link;
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3828
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3829 if (p==NULL)
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3830 return;
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3831 g_strchomp(p);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3832 q = strchr(p,'\n');
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3833 if (q==NULL)
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3834 {
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3835 link=g_strconcat("<a href=\"",p,"\">",p,"</a>",NULL);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3836 }
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3837 else
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3838 {
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3839 uri = g_strndup(p,q-p);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3840 q++;
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3841 link=g_strconcat("<a href=\"",uri,"\">",q,"</a>",NULL);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3842 g_free(uri);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3843 }
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3844 gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(gtkconv->entry_buffer), link, -1);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3845 g_free(link);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3846 }
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3847 if (info == TARGET_XURL)
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3848 {
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3849 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3850 gchar* link;
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3851 uri=g_strdup((gchar*) sd->data);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3852 g_strstrip(uri);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3853 link=g_strconcat("<a href=\"",uri,"\">",uri,"</a>",NULL);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3854 g_free(uri);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3855 gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(gtkconv->entry_buffer), link, -1);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3856 g_free(link);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3857 }
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3858 if (info == TARGET_URI_LIST && (gchar*)sd->data != NULL
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3859 && g_ascii_strncasecmp((gchar*)sd->data,"file:",5)!=0)
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3860 {
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3861 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3862 gchar *p, *q, *link;
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3863 q=g_strdup((gchar*) sd->data);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3864 g_strstrip(q);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3865 p=strchr(q,'\n');
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3866 if (p==NULL)
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3867 {
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3868 uri=g_strdup(q); /* strdup'ing this to make it match the else */
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3869 }
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3870 else
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3871 {
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3872 uri=g_strndup(q,q-p);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3873 }
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3874 g_free(q);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3875 link=g_strconcat("<a href=\"",uri,"\">",uri,"</a>",NULL);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3876 g_free(uri);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3877 gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(gtkconv->entry_buffer), link, -1);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3878 g_free(link);
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
3879 }
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3880 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3881
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3882 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3883 * GTK+ window ops
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3884 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3885 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3886 gaim_gtk_new_window(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3887 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3888 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3889 GtkPositionType pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3890 GtkWidget *testidea;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3891 GtkWidget *menubar;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3892
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3893 gtkwin = g_malloc0(sizeof(GaimGtkWindow));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3894
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3895 win->ui_data = gtkwin;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3896
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3897 /* Create the window. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3898 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3899 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation");
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
3900 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE);
4510
deb241b1189c [gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents: 4505
diff changeset
3901 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0);
5173
a04fc5bcbf3f [gaim-migrate @ 5537]
Nathan Walp <nwalp@pidgin.im>
parents: 5167
diff changeset
3902 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3903 gtk_widget_realize(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3904
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3905 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3906 G_CALLBACK(close_win_cb), win);
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 /* Create the notebook. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3909 gtkwin->notebook = gtk_notebook_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3910
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3911 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3912
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3913 #if 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3914 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3915 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3916 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3917 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3918 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3919 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook));
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3920 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE);
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3921
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3922 gtk_widget_show(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3923
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3924 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3925 G_CALLBACK(switch_conv_cb), win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3926
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3927 /* Setup the tab drag and drop signals. */
4486
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
3928 gtk_widget_add_events(gtkwin->notebook,
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
3929 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
3930 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event",
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3931 G_CALLBACK(notebook_press_cb), win);
4486
ac295cdeaa2f [gaim-migrate @ 4761]
Sean Egan <seanegan@pidgin.im>
parents: 4485
diff changeset
3932 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event",
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3933 G_CALLBACK(notebook_release_cb), win);
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3934
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3935 testidea = gtk_vbox_new(FALSE, 0);
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3936
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3937 /* Setup the menubar. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3938 menubar = setup_menubar(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3939 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3940
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3941 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3942
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3943 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3944
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3945 gtk_widget_show(testidea);
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3948 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3949 gaim_gtk_destroy_window(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3950 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3951 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3952
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3953 gtk_widget_destroy(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3954
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3955 g_object_unref(G_OBJECT(gtkwin->menu.item_factory));
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4621
diff changeset
3956
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3957 g_free(gtkwin);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3958 win->ui_data = NULL;
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3961 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3962 gaim_gtk_show(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3963 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3964 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3965
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3966 gtk_widget_show(gtkwin->window);
7413
5dd459ca732f [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3967
5dd459ca732f [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3968 #ifdef _WIN32
7415
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3969 /* This works around a win32 gtk+ bug, where it can't handle
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3970 * creating the button correctly before the window is shown.
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3971 * That's why we get the appearance of a button, without all
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3972 * the normal button-like properties, like being able to click
7413
5dd459ca732f [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3973 * it. ;-) --Nathan */
7414
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3974 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) {
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3975 GaimConversation *conv;
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3976 GaimGtkConversation *gtkconv;
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3977
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3978 conv = gaim_conv_window_get_conversation_at(win, 0);
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3979 if(conv) {
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3980 gtkconv = GAIM_GTK_CONVERSATION(conv);
7415
ebaaa90880dd [gaim-migrate @ 8017]
Nathan Walp <nwalp@pidgin.im>
parents: 7414
diff changeset
3981 gtk_widget_hide(gtkconv->close);
7414
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3982 gtk_widget_show_all(gtkconv->close);
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3983 }
1f56534ca6bf [gaim-migrate @ 8016]
Nathan Walp <nwalp@pidgin.im>
parents: 7413
diff changeset
3984 }
7413
5dd459ca732f [gaim-migrate @ 8015]
Nathan Walp <nwalp@pidgin.im>
parents: 7398
diff changeset
3985 #endif
4359
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3988 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3989 gaim_gtk_hide(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3990 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3991 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3992
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3993 gtk_widget_hide(gtkwin->window);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3994 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3995
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3996 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
3997 gaim_gtk_raise(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3998 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3999 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4000
5484
6465b2fa6c4a [gaim-migrate @ 5880]
Nathan Walp <nwalp@pidgin.im>
parents: 5462
diff changeset
4001 gtk_widget_show(gtkwin->window);
5103
d19766adbae1 [gaim-migrate @ 5466]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
4002 gtk_window_deiconify(GTK_WINDOW(gtkwin->window));
4526
1966e014e779 [gaim-migrate @ 4804]
Nathan Walp <nwalp@pidgin.im>
parents: 4515
diff changeset
4003 gdk_window_raise(gtkwin->window->window);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4004 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4005
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4006 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4007 gaim_gtk_flash(GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4008 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4009 #ifdef _WIN32
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4010 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4011
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4012 wgaim_conv_im_blink(gtkwin->window);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4013 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4014 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4015
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4016 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4017 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4018 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4019 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4020
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4021 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4022
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4023 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4024 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4025
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4026 static const GtkTargetEntry te[] =
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4027 {
7694
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4028 {"x-url/ftp", 0, TARGET_XURL},
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4029 {"x-url/http", 0, TARGET_XURL},
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4030 {"text/uri-list", 0, TARGET_URI_LIST},
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4031 {"GAIM_BLIST_NODE", 0, TARGET_BLIST_NODE},
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4032 {"STRING", 0, TARGET_STRING},
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4033 {"_NETSCAPE_URL", 0, TARGET_NETSCAPE_URL},
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4034 {"text/plain", 0, TARGET_PLAIN_TEXT}
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4035 };
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4036
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4037 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4038 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4039 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4040 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4041 GaimGtkConversation *gtkconv, *focus_gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4042 GaimConversation *focus_conv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4043 GtkWidget *pane = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4044 GtkWidget *tab_cont;
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4045 GtkWidget *tabby, *menu_tabby;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4046 gboolean new_ui;
4383
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4047 GaimConversationType conv_type;
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4048 const char *name;
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4049
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4050 name = gaim_conversation_get_name(conv);
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4051 conv_type = gaim_conversation_get_type(conv);
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4052 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4053
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4054 if (conv->ui_data != NULL) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4055 gtkconv = (GaimGtkConversation *)conv->ui_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4056
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4057 tab_cont = gtkconv->tab_cont;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4058
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4059 new_ui = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4060 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4061 else {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4062 gtkconv = g_malloc0(sizeof(GaimGtkConversation));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4063 conv->ui_data = gtkconv;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4064
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4065 /* Setup some initial variables. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4066 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4067 gtkconv->tooltips = gtk_tooltips_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4068
4421
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
4069 /* Setup the foreground and background colors */
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
4070 gaim_gtkconv_update_font_colors(conv);
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
4071
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4072 /* Setup the font face */
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4073 gaim_gtkconv_update_font_face(conv);
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
4074
4383
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4075 if (conv_type == GAIM_CONV_CHAT) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4076 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4077
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4078 pane = setup_chat_pane(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4079 }
4383
92d3152f22f3 [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
4080 else if (conv_type == GAIM_CONV_IM) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4081 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4082 gtkconv->u.im->a_virgin = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4083
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4084 pane = setup_im_pane(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4085 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4086
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4087 if (pane == NULL) {
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4088 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat);
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4089 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
4090
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4091 g_free(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4092 conv->ui_data = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4093
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4094 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4095 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4096
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4097 /* Setup drag-and-drop */
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4098 gtk_drag_dest_set(pane,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4099 GTK_DEST_DEFAULT_MOTION |
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4100 GTK_DEST_DEFAULT_DROP,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4101 te, sizeof(te) / sizeof(GtkTargetEntry),
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4102 GDK_ACTION_COPY);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4103 gtk_drag_dest_set(gtkconv->imhtml,
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4104 GTK_DEST_DEFAULT_MOTION |
4702
49006c93f70c [gaim-migrate @ 5013]
Sean Egan <seanegan@pidgin.im>
parents: 4689
diff changeset
4105 GTK_DEST_DEFAULT_DROP,
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4106 te, sizeof(te) / sizeof(GtkTargetEntry),
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4107 GDK_ACTION_DEFAULT | GDK_ACTION_COPY | GDK_ACTION_MOVE);
7694
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4108 gtk_drag_dest_set(gtkconv->entry, 0,
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4109 te, sizeof(te) / sizeof(GtkTargetEntry),
4694af95b1c6 [gaim-migrate @ 8339]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
4110 GDK_ACTION_COPY);
4689
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4111 g_signal_connect(G_OBJECT(pane), "drag_data_received",
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4112 G_CALLBACK(conv_dnd_recv), conv);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4113 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received",
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4114 G_CALLBACK(conv_dnd_recv), conv);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4115 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received",
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4116 G_CALLBACK(conv_dnd_recv), conv);
524a0357d05b [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
4117
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4118 /* Setup the container for the tab. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4119 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4120 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4121 gtk_container_add(GTK_CONTAINER(tab_cont), pane);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4122 gtk_widget_show(pane);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4123
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4124 new_ui = TRUE;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4125
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4126 gtkconv->make_sound = TRUE;
5902
6f9b6b4037b0 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
4127
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4128 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4129 "/gaim/gtk/conversations/show_formatting_toolbar");
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4130
5902
6f9b6b4037b0 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
4131 g_signal_connect_swapped(G_OBJECT(pane), "focus",
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4132 G_CALLBACK(gtk_widget_grab_focus),
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4133 gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4134 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4135
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4136 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 5);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4137 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 5);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4138
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4139 /* Close button. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4140 gtkconv->close = gtk_button_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4141 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
4142 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4143 gtk_container_add(GTK_CONTAINER(gtkconv->close),
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4144 gtk_image_new_from_stock(GTK_STOCK_CLOSE,
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4145 GTK_ICON_SIZE_MENU));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4146 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close,
4572
c6dfc8e14233 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
4147 _("Close conversation"), NULL);
4359
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 g_signal_connect(G_OBJECT(gtkconv->close), "clicked",
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4150 G_CALLBACK(close_conv_cb), conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4151
7446
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4152 /*
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4153 * 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
4154 * border bug. I love you guys! -- ChipX86
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4155 */
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4156 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed",
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4157 G_CALLBACK(tab_close_button_state_changed_cb), NULL);
1c812f211c37 [gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents: 7440
diff changeset
4158
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4159 /* Status icon. */
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
4160 gtkconv->icon = gtk_image_new();
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4161 gtkconv->menu_icon = gtk_image_new();
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
4162 update_tab_icon(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4163
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4164 /* Tab label. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4165 gtkconv->tab_label = gtk_label_new(gaim_conversation_get_title(conv));
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4166 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4167 #if 0
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4168 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
4169 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4170 #endif
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4171
4939
ea6aed119816 [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
4172
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4173 /* Pack it all together. */
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4174 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4175 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, FALSE, FALSE, 0);
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4176 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) {
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4177 gtk_widget_show_all(gtkconv->icon);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4178 gtk_widget_show_all(gtkconv->menu_icon);
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4179 }
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4180
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4181 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4182 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
4183 gtk_widget_show(gtkconv->tab_label);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4184 gtk_widget_show(gtkconv->menu_label);
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4185 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
4186
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4187 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
4188 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
4189 gtk_widget_show_all(gtkconv->close);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4190
4445
7714a907e535 [gaim-migrate @ 4720]
Sean Egan <seanegan@pidgin.im>
parents: 4438
diff changeset
4191 gtk_widget_show(tabby);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4192 gtk_widget_show(menu_tabby);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4193
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4194 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4195 gaim_gtkconv_update_buddy_icon(conv);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4196
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4197 /* Add this pane to the conversations notebook. */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4198 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4199 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, menu_tabby);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4200
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4201 gtk_widget_show(tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4202
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4203 if (gaim_conv_window_get_conversation_count(win) == 1) {
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4204 /* Er, bug in notebooks? Switch to the page manually. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4205 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0);
4851
7d23d765eda1 [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
4206
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4207 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4208 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4209 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4210 else
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4211 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4212
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4213 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
4214 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)));
deed98aa3181 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4215 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv);
deed98aa3181 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
4216 gtk_widget_grab_focus(focus_gtkconv->entry);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4217
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4218 if (!new_ui)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4219 g_object_unref(gtkconv->tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4220
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4221 if (gaim_conv_window_get_conversation_count(win) == 1)
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
4222 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4223 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4224
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4225 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4226 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4227 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4228 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4229 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4230 unsigned int index;
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4231 GaimConversationType conv_type;
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4232
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4233 conv_type = gaim_conversation_get_type(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4234 index = gaim_conversation_get_index(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4235
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4236 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4237 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4238
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4239 g_object_ref(gtkconv->tab_cont);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4240 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4241
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4242 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4243
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4244 /* go back to tabless if need be */
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4245 if (gaim_conv_window_get_conversation_count(win) <= 2) {
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4246 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4247 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
4818
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4248 }
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4249
274c8ab2c949 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
4250
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4251 /* 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
4252 if (conv_type == GAIM_CONV_IM &&
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4253 gaim_conversation_get_gc(conv) == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4254
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
4255 generate_send_as_items(win, conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4256 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4257 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4258
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4259 static void
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4260 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4261 unsigned int new_index)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4262 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4263 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4264 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4265
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4266 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4267 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4268
4415
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4269 if (new_index > gaim_conversation_get_index(conv))
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4270 new_index--;
eca21938871e [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4271
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4272 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4273 gtkconv->tab_cont, new_index);
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4276 static int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4277 gaim_gtk_get_active_index(const GaimConvWindow *win)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4278 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4279 GaimGtkWindow *gtkwin;
5680
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4280 int index;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4281
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4282 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4283
5680
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4284 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook));
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4285
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4286 /*
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4287 * A fix, because the first conversation may be active, but not
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4288 * appear in the notebook just yet. -- ChipX86
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4289 */
fcf222b89d65 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4290 return (index == -1 ? 0 : index);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4291 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4292
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4293 static GaimConvWindowUiOps window_ui_ops =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4294 {
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4295 gaim_gtk_conversations_get_conv_ui_ops,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4296 gaim_gtk_new_window,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4297 gaim_gtk_destroy_window,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4298 gaim_gtk_show,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4299 gaim_gtk_hide,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4300 gaim_gtk_raise,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4301 gaim_gtk_flash,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4302 gaim_gtk_switch_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4303 gaim_gtk_add_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4304 gaim_gtk_remove_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4305 gaim_gtk_move_conversation,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4306 gaim_gtk_get_active_index
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4307 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4308
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4309 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4310 update_convo_add_button(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4311 {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4312 GaimPluginProtocolInfo *prpl_info = NULL;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4313 GaimConvWindow *win;
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4314 GaimGtkWindow *gtkwin;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4315 GaimGtkConversation *gtkconv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
4316 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4317 GaimConversationType type;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4318 GtkWidget *parent;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4319
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4320 gc = gaim_conversation_get_gc(conv);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4321 win = gaim_conversation_get_window(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4322 type = gaim_conversation_get_type(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4323 gtkconv = GAIM_GTK_CONVERSATION(conv);
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4324 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4325 parent = gtk_widget_get_parent(gtkconv->u.im->add);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4326
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4327 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4328
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4685
diff changeset
4329 if (gaim_find_buddy(gc->account, gaim_conversation_get_name(conv))) {
4397
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4330 gtkconv->u.im->add =
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4331 gaim_gtk_change_text(_("Remove"), gtkconv->u.im->add,
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4332 GTK_STOCK_REMOVE, type);
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4333 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add,
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4334 _("Remove the user from your buddy list"), NULL);
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4335
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4336 gtk_widget_set_sensitive(gtkconv->u.im->add,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4337 (gc != NULL && prpl_info->remove_buddy != NULL));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4338
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4339 if (gaim_conv_window_get_active_conversation(win) == conv) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4340 gtk_widget_show(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4341 gtk_widget_hide(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4342 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4343 }
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4344 else {
4397
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4345 gtkconv->u.im->add =
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4346 gaim_gtk_change_text(_("Add"), gtkconv->u.im->add,
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4347 GTK_STOCK_ADD, type);
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4348 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add,
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4349 _("Add the user to your buddy list"), NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4350
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4351 gtk_widget_set_sensitive(gtkconv->u.im->add,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4352 (gc != NULL && prpl_info->add_buddy != NULL));
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4353
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4354 if (gaim_conv_window_get_active_conversation(win) == conv) {
5908
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4355 gtk_widget_show(gtkwin->menu.add);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4356 gtk_widget_hide(gtkwin->menu.remove);
47ad3b3798ac [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4357 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4358 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4359
4397
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4360 g_signal_connect(G_OBJECT(gtkconv->u.im->add), "clicked",
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4361 G_CALLBACK(add_cb), conv);
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4362
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4363 gtk_box_pack_start(GTK_BOX(parent), gtkconv->u.im->add,
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4364 FALSE, FALSE, 0);
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4365 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->u.im->add, 3);
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4366 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.im->add), GTK_RELIEF_NONE);
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
4367 gtk_size_group_add_widget(gtkconv->sg, gtkconv->u.im->add);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4368 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4369
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4370 GaimConvWindowUiOps *
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
4371 gaim_gtk_conversations_get_win_ui_ops(void)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4372 {
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4373 return &window_ui_ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4374 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4375
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4376 /**************************************************************************
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4377 * Conversation UI operations
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4378 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4379 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4380 gaim_gtkconv_destroy(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4381 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4382 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4383
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4384 if (gtkconv->dialogs.fg_color != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4385 gtk_widget_destroy(gtkconv->dialogs.fg_color);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4386
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4387 if (gtkconv->dialogs.bg_color != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4388 gtk_widget_destroy(gtkconv->dialogs.bg_color);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4389
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4390 if (gtkconv->dialogs.font != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4391 gtk_widget_destroy(gtkconv->dialogs.font);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4392
5959
827dbe4b5bb2 [gaim-migrate @ 6405]
Mark Doliner <markdoliner@pidgin.im>
parents: 5934
diff changeset
4393 if (gtkconv->dialogs.image != NULL)
827dbe4b5bb2 [gaim-migrate @ 6405]
Mark Doliner <markdoliner@pidgin.im>
parents: 5934
diff changeset
4394 gtk_widget_destroy(gtkconv->dialogs.image);
827dbe4b5bb2 [gaim-migrate @ 6405]
Mark Doliner <markdoliner@pidgin.im>
parents: 5934
diff changeset
4395
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4396 if (gtkconv->dialogs.smiley != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4397 gtk_widget_destroy(gtkconv->dialogs.smiley);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4398
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4399 if (gtkconv->dialogs.link != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4400 gtk_widget_destroy(gtkconv->dialogs.link);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4401
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4402 if (gtkconv->dialogs.log != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4403 gtk_widget_destroy(gtkconv->dialogs.log);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4404
7295
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
4405 if (gtkconv->dialogs.search != NULL)
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
4406 gtk_widget_destroy(gtkconv->dialogs.search);
4b40d35a6b25 [gaim-migrate @ 7879]
Sean Egan <seanegan@pidgin.im>
parents: 7261
diff changeset
4407
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4408 gtk_widget_destroy(gtkconv->tab_cont);
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4859
diff changeset
4409 g_object_unref(gtkconv->tab_cont);
4571
57ca8feb5fd3 [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4410
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4411 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4755
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4412 if (gtkconv->u.im->icon_timer != 0)
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4413 g_source_remove(gtkconv->u.im->icon_timer);
64ee7fb9cdba [gaim-migrate @ 5072]
Mark Doliner <markdoliner@pidgin.im>
parents: 4748
diff changeset
4414
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4415 if (gtkconv->u.im->save_icon != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4416 gtk_widget_destroy(gtkconv->u.im->save_icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4417
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4418 if (gtkconv->u.im->anim != NULL)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4419 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4420
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4421 g_free(gtkconv->u.im);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4422 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4423 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4424 g_free(gtkconv->u.chat);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4425 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4426
4633
7966149b2603 [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4427 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips));
7966149b2603 [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4428
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4429 g_free(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4430 }
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 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4433 gaim_gtkconv_write_im(GaimConversation *conv, const char *who,
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4434 const char *message, GaimMessageFlags flags,
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4435 time_t mtime)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4436 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4437 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4438
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4439 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4440
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4441 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4442 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) {
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4443
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4444 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4445 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4446
4382
fd60cabf2bae [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4447 /* Play a sound, if specified in prefs. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4448 if (gtkconv->make_sound) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4449 if (flags & GAIM_MESSAGE_RECV) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4450 if (gtkconv->u.im->a_virgin &&
5820
93bcc8fca197 [gaim-migrate @ 6250]
Nathan Walp <nwalp@pidgin.im>
parents: 5754
diff changeset
4451 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4452
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4453 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4454 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4455 else
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4456 gaim_sound_play_event(GAIM_SOUND_RECEIVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4457 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4458 else {
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4459 gaim_sound_play_event(GAIM_SOUND_SEND);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4460 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4461 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4462
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4463 gtkconv->u.im->a_virgin = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4464
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4465 gaim_conversation_write(conv, who, message, flags, mtime);
4359
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4468 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4469 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who,
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4470 const char *message, GaimMessageFlags flags, time_t mtime)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4471 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4472 GaimGtkConversation *gtkconv;
4359
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 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4475
4382
fd60cabf2bae [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4476 /* Play a sound, if specified in prefs. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4477 if (gtkconv->make_sound) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4478 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND))
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4479 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4480 else if (flags & GAIM_MESSAGE_RECV) {
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4481 if ((flags & GAIM_MESSAGE_NICK) &&
6102
7c07bad80274 [gaim-migrate @ 6563]
Luke Schierer <lschiere@pidgin.im>
parents: 6095
diff changeset
4482 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4483
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4484 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4485 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4486 else
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4487 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4488 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4489 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4490
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4491 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
4492 flags |= GAIM_MESSAGE_COLORIZE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4493
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4494 /* Raise the window, if specified in prefs. */
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4495 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4496 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) {
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4497
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4498 gaim_conv_window_raise(gaim_conversation_get_window(conv));
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4499 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4500
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4501 gaim_conversation_write(conv, who, message, flags, mtime);
4359
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4504 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4505 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who,
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4506 const char *message, GaimMessageFlags flags,
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4507 time_t mtime)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4508 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4509 GaimGtkConversation *gtkconv;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4510 GaimConvWindow *win;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
4511 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4512 int gtk_font_options = 0;
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4513 GSList *images = NULL;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4514 char buf[BUF_LONG];
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4515 char buf2[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4516 char mdate[64];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4517 char color[10];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4518 char *str;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4519 char *with_font_tag;
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4520 char *sml_attrib = NULL;
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4521 size_t length = strlen(message) + 1;
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4522
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4523 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4524 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4525
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4526 win = gaim_conversation_get_window(conv);
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4527
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4528 if (!(flags & GAIM_MESSAGE_NO_LOG) &&
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4529 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4530 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) ||
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4531 (gaim_conversation_get_type(conv) == GAIM_CONV_IM &&
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4532 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") ||
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4533 gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))))) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4534
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4535 gaim_conv_window_show(win);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4536 }
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4537
7078
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4538 if (flags & GAIM_MESSAGE_IMAGES)
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4539 gaim_gtk_find_images(message, &images);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4540
5133
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4541 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
4542 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
4543 else
509fe6c8fca4 [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4544 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4545
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4546 if(gc)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4547 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4548
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4549 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4550
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4551 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4552 gtk_font_options ^= GTK_IMHTML_NO_COLOURS;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4553
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4554 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4555 gtk_font_options ^= GTK_IMHTML_NO_FONTS;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4556
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4557 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4558 gtk_font_options ^= GTK_IMHTML_NO_SIZES;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4559
6185
5cc1fa94415a [gaim-migrate @ 6671]
Sean Egan <seanegan@pidgin.im>
parents: 6141
diff changeset
4560 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol(conv->account)))->options &
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4561 OPT_PROTO_USE_POINTSIZE) {
5367
a2f9e6418413 [gaim-migrate @ 5743]
Ka-Hing Cheung <khc@pidgin.im>
parents: 5329
diff changeset
4562 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE;
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4563 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4564
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4565 if (flags & GAIM_MESSAGE_SYSTEM) {
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4566 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
5329
4df52e8890ff [gaim-migrate @ 5702]
David J. Brigada <brigada@prism.net>
parents: 5314
diff changeset
4567 g_snprintf(buf, BUF_LONG, "(%s) <B>%s</B>",
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4568 mdate, message);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4569 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4570 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4571
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4572 g_snprintf(buf2, sizeof(buf2),
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4573 "<!--(%s) --><B>%s</B><BR>",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4574 mdate, message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4575
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4576 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4577
7583
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
4578 /* Add the message to a conversations scrollback buffer */
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
4579 conv->history = g_string_append(conv->history, buf);
c4db7febf636 [gaim-migrate @ 8201]
Mark Doliner <markdoliner@pidgin.im>
parents: 7564
diff changeset
4580 conv->history = g_string_append(conv->history, "<BR>\n");
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4581
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4582 } else if (flags & GAIM_MESSAGE_NO_LOG) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4583 g_snprintf(buf, BUF_LONG,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4584 "<B><FONT COLOR=\"#777777\">%s</FONT></B><BR>",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4585 message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4586
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4587 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf, 0, images);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4588 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4589 else {
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4590 char *new_message = g_memdup(message, length);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4591
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4592 if (flags & GAIM_MESSAGE_WHISPER) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4593 str = g_malloc(1024);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4594
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4595 /* If we're whispering, it's not an autoresponse. */
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
4596 if (gaim_message_meify(new_message, length)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4597 g_snprintf(str, 1024, "***%s", who);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4598 strcpy(color, "#6C2585");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4599 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4600 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4601 g_snprintf(str, 1024, "*%s*:", who);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4602 strcpy(color, "#00FF00");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4603 }
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4604 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4605 else {
7564
baab99d239d8 [gaim-migrate @ 8180]
Nathan Walp <nwalp@pidgin.im>
parents: 7561
diff changeset
4606 if (gaim_message_meify(new_message, length)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4607 str = g_malloc(1024);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4608
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4609 if (flags & GAIM_MESSAGE_AUTO_RESP)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4610 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4611 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4612 g_snprintf(str, 1024, "***%s", who);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4613
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4614 if (flags & GAIM_MESSAGE_NICK)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4615 strcpy(color, "#AF7F00");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4616 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4617 strcpy(color, "#062585");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4618 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4619 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4620 str = g_malloc(1024);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4621 if (flags & GAIM_MESSAGE_AUTO_RESP)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4622 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4623 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4624 g_snprintf(str, 1024, "%s:", who);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4625 if (flags & GAIM_MESSAGE_NICK)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4626 strcpy(color, "#AF7F00");
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4627 else if (flags & GAIM_MESSAGE_RECV) {
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4628 if (flags & GAIM_MESSAGE_COLORIZE) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4629 const char *u;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4630 int m = 0;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4631
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4632 for (u = who; *u != '\0'; u++)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4633 m += *u;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4634
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4635 m = m % NUM_NICK_COLORS;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4636
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4637 strcpy(color, nick_colors[m]);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4638 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4639 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4640 strcpy(color, "#A82F2F");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4641 }
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6495
diff changeset
4642 else if (flags & GAIM_MESSAGE_SEND)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4643 strcpy(color, "#16569E");
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4644 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4645 }
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4646
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4647 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4648 g_snprintf(buf, BUF_LONG,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4649 "<FONT COLOR=\"%s\" %s>(%s) "
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4650 "<B>%s</B></FONT> ", color,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4651 sml_attrib ? sml_attrib : "", mdate, str);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4652 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4653 g_snprintf(buf, BUF_LONG,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4654 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color,
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4655 sml_attrib ? sml_attrib : "", str);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4656
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4657 g_snprintf(buf2, BUF_LONG,
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4658 "<FONT COLOR=\"%s\" %s><!--(%s) -->"
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4659 "<B>%s</B></FONT> ",
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4660 color, sml_attrib ? sml_attrib : "", mdate, str);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4661
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4662 g_free(str);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4663
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4664 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4665
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4666 if(gc){
4896
2fd2c119e426 [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4667 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
4668 char *post = "</font>";
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4669 int pre_len = strlen(pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4670 int post_len = strlen(post);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4671
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4672 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
4673
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4674 strcpy(with_font_tag, pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4675 memcpy(with_font_tag + pre_len, new_message, length);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4676 strcpy(with_font_tag + pre_len + length, post);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4677
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4678 length += pre_len + post_len;
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4679 g_free(pre);
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4680 }
4608
c165a90c65fc [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4602
diff changeset
4681 else
4895
51794f61995e [gaim-migrate @ 5227]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4892
diff changeset
4682 with_font_tag = g_memdup(new_message, length);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4683
7589
b7d4b16bcf4e [gaim-migrate @ 8207]
Nathan Walp <nwalp@pidgin.im>
parents: 7583
diff changeset
4684 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml),
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4685 with_font_tag, gtk_font_options, images);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4686
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4687 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4688
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4689 /*conv->history = g_string_append(conv->history, t1);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4690 conv->history = g_string_append(conv->history, t2);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4691 conv->history = g_string_append(conv->history, "\n");
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4692
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4693 g_free(t1);
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4694 g_free(t2); */
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4695
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4696 g_free(with_font_tag);
7447
4876aeb16c60 [gaim-migrate @ 8058]
Mark Doliner <markdoliner@pidgin.im>
parents: 7446
diff changeset
4697 g_free(new_message);
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4698 }
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7431
diff changeset
4699
6062
a292fd631fdb [gaim-migrate @ 6512]
Mark Doliner <markdoliner@pidgin.im>
parents: 6057
diff changeset
4700
5012
a6e5bbd44d89 [gaim-migrate @ 5348]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4965
diff changeset
4701 if(sml_attrib)
a6e5bbd44d89 [gaim-migrate @ 5348]
Ka-Hing Cheung <khc@pidgin.im>
parents: 4965
diff changeset
4702 g_free(sml_attrib);
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4703
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4704 if (images) {
7078
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4705 GSList *tmp;
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4706
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4707 for (tmp = images; tmp; tmp = tmp->next) {
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4708 GdkPixbuf *pixbuf = tmp->data;
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4709 if(pixbuf)
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4710 g_object_unref(pixbuf);
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4711 }
7078
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
4712
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4713 g_slist_free(images);
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6877
diff changeset
4714 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4715 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4716
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4717 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4718 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4719 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4720 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4721 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4722 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4723 char tmp[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4724 int num_users;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4725 int pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4726
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4727 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4728 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4729 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4730
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4731 num_users = g_list_length(gaim_conv_chat_get_users(chat));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4732
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4733 g_snprintf(tmp, sizeof(tmp),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4734 ngettext("%d person in room", "%d people in room",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4735 num_users),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4736 num_users);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4737
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4738 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4739
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4740 if (gtkconv->make_sound)
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4741 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4742
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4743 pos = g_list_index(gaim_conv_chat_get_users(chat), user);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4744
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4745 add_chat_buddy_common(conv, user, pos);
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4748 static void
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4749 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4750 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4751 GaimConvChat *chat;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4752 GaimGtkConversation *gtkconv;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4753 GaimGtkChatPane *gtkchat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4754 GList *l;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4755 char tmp[BUF_LONG];
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4756 int num_users;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4757 int pos;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4758
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4759 chat = GAIM_CONV_CHAT(conv);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4760 gtkconv = GAIM_GTK_CONVERSATION(conv);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4761 gtkchat = gtkconv->u.chat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4762
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4763 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
4764
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4765 g_snprintf(tmp, sizeof(tmp),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4766 ngettext("%d person in room", "%d people in room",
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4767 num_users),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4768 num_users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4769
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4770 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4771
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4772 for (l = users; l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4773 pos = g_list_index(gaim_conv_chat_get_users(chat), (char *)l->data);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4774
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4775 add_chat_buddy_common(conv, (char *)l->data, pos);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4776 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4777 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4778
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4779 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4780 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name,
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4781 const char *new_name)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4782 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4783 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4784 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4785 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4786 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4787 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4788 GList *names;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4789 int pos;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4790 int f = 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4791
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4792 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4793 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4794 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4795
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4796 for (names = gaim_conv_chat_get_users(chat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4797 names != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4798 names = names->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4799
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4800 char *u = (char *)names->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4801
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4802 if (!gaim_utf8_strcasecmp(u, old_name)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4803 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4804
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4805 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4806 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4807
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4808 while (f != 0) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4809 char *val;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4810
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4811 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4812
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4813 if (!gaim_utf8_strcasecmp(old_name, val)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4814 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
4640
494fc398c8f5 [gaim-migrate @ 4949]
Nathan Walp <nwalp@pidgin.im>
parents: 4636
diff changeset
4815 break;
494fc398c8f5 [gaim-migrate @ 4949]
Nathan Walp <nwalp@pidgin.im>
parents: 4636
diff changeset
4816 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4817
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4818 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4819
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4820 g_free(val);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4821 }
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
4822
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4823 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4824 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4825 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4826
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4827 if (!names)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4828 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4829
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4830 pos = g_list_index(gaim_conv_chat_get_users(chat), new_name);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4831
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4832 add_chat_buddy_common(conv, new_name, pos);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4833 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4834
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4835 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4836 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4837 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4838 GaimConvChat *chat;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4839 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4840 GaimGtkChatPane *gtkchat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4841 GtkTreeIter iter;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4842 GtkTreeModel *model;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4843 GList *names;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4844 char tmp[BUF_LONG];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4845 int num_users;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4846 int f = 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4847
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4848 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4849 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4850 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4851
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4852 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
4853
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4854 for (names = gaim_conv_chat_get_users(chat);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4855 names != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4856 names = names->next) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4857
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4858 char *u = (char *)names->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4859
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4860 if (!gaim_utf8_strcasecmp(u, user)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4861 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4862
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4863 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4864 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4865
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4866 while (f != 0) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4867 char *val;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4868
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4869 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4870
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4871 if (!gaim_utf8_strcasecmp(user, val))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4872 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4873
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4874 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4875
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4876 g_free(val);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4877 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4878
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4879 break;
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 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4882
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4883 if (names == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4884 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4885
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4886 g_snprintf(tmp, sizeof(tmp),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4887 ngettext("%d person in room", "%d people in room",
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4888 num_users), num_users);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4889
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4890 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4891
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4892 if (gtkconv->make_sound)
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4893 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4894 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4895
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4896 static void
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4897 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4898 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4899 GaimConvChat *chat;
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4900 GaimGtkConversation *gtkconv;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4901 GaimGtkChatPane *gtkchat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4902 GtkTreeIter iter;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4903 GtkTreeModel *model;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4904 GList *names = NULL;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4905 GList *l;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4906 char tmp[BUF_LONG];
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4907 int num_users;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4908 int f = 1;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4909
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4910 chat = GAIM_CONV_CHAT(conv);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4911 gtkconv = GAIM_GTK_CONVERSATION(conv);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4912 gtkchat = gtkconv->u.chat;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4913
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4914 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
4915 g_list_length(users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4916
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4917 for (l = users; l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4918 for (names = gaim_conv_chat_get_users(chat);
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4919 names != NULL;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4920 names = names->next) {
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4921
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4922 char *u = (char *)names->data;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4923
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4924 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) {
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4925 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4926
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4927 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4928 &iter))
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4929 break;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4930
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4931 while (f != 0) {
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4932 char *val;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4933
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4934 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter,
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4935 1, &val, -1);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4936
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4937 if (!gaim_utf8_strcasecmp((char *)l->data, val))
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4938 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4939
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4940 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4941
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4942 g_free(val);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4943 }
7431
f3eaace13491 [gaim-migrate @ 8036]
Sean Egan <seanegan@pidgin.im>
parents: 7420
diff changeset
4944
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4945 break;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4946 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4947 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4948 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4949
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4950 if (names == NULL)
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4951 return;
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4952
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4953 g_snprintf(tmp, sizeof(tmp),
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4954 ngettext("%d person in room", "%d people in room",
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4955 num_users), num_users);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4956
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4957 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4958 }
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4959
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
4960 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4961 gaim_gtkconv_set_title(GaimConversation *conv, const char *title)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4962 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4963 GaimGtkConversation *gtkconv;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4964 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4965 GaimGtkWindow *gtkwin;
4681
c69f37dbb191 [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4966
c69f37dbb191 [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4967 win = gaim_conversation_get_window(conv);
c69f37dbb191 [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4968 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4969 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4970
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4971 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
4972 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4973
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
4974 if(conv == gaim_conv_window_get_active_conversation(win))
4681
c69f37dbb191 [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4975 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4976 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4977
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4978 static void
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4979 update_tab_icon(GaimConversation *conv)
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4980 {
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4981 GaimGtkConversation *gtkconv;
7146
9c1637aee56c [gaim-migrate @ 7713]
Sean Egan <seanegan@pidgin.im>
parents: 7143
diff changeset
4982 GaimConvWindow *win = gaim_conversation_get_window(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4983 GaimAccount *account;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4984 const char *name;
7008
b1c86e03b94c [gaim-migrate @ 7565]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
4985 GdkPixbuf *status = NULL;
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4986
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4987 gtkconv = GAIM_GTK_CONVERSATION(conv);
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4988 name = gaim_conversation_get_name(conv);
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
4989 account = gaim_conversation_get_account(conv);
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
4990
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
4991 status = get_tab_icon(conv);
7008
b1c86e03b94c [gaim-migrate @ 7565]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
4992
b1c86e03b94c [gaim-migrate @ 7565]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
4993 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
b1c86e03b94c [gaim-migrate @ 7565]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
4994 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
b1c86e03b94c [gaim-migrate @ 7565]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
4995
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
4996 if (gaim_conv_window_get_active_conversation(win) == conv && gtkconv->u.im->anim == NULL)
7146
9c1637aee56c [gaim-migrate @ 7713]
Sean Egan <seanegan@pidgin.im>
parents: 7143
diff changeset
4997 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status);
9c1637aee56c [gaim-migrate @ 7713]
Sean Egan <seanegan@pidgin.im>
parents: 7143
diff changeset
4998
7008
b1c86e03b94c [gaim-migrate @ 7565]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
4999 if(status)
b1c86e03b94c [gaim-migrate @ 7565]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
5000 g_object_unref(status);
7146
9c1637aee56c [gaim-migrate @ 7713]
Sean Egan <seanegan@pidgin.im>
parents: 7143
diff changeset
5001
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5002 }
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5003
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5004 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5005 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5006 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5007 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5008 GaimGtkWindow *gtkwin;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5009 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5010 GaimGtkChatPane *gtkchat;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5011 GaimConvChat *chat;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5012
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5013 win = gaim_conversation_get_window(conv);
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5014 gtkwin = GAIM_GTK_WINDOW(win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5015 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5016
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
5017 if (type == GAIM_CONV_UPDATE_ACCOUNT) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5018 gaim_conversation_autoset_title(conv);
5881
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5019
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5020 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5021 gaim_gtkconv_update_buddy_icon(conv);
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5022
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5023 gaim_gtkconv_update_buttons_by_protocol(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5024
4685
2c4bde862f6b [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
5025 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5026
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5027 smiley_themeize(gtkconv->imhtml);
6394
51957edc16c5 [gaim-migrate @ 6899]
Nathan Walp <nwalp@pidgin.im>
parents: 6392
diff changeset
5028
6395
61afe11ff70e [gaim-migrate @ 6900]
Nathan Walp <nwalp@pidgin.im>
parents: 6394
diff changeset
5029 update_tab_icon(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5030 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5031 else if (type == GAIM_CONV_UPDATE_TYPING ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5032 type == GAIM_CONV_UPDATE_UNSEEN) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5033 GtkStyle *style;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5034 GaimConvIm *im = NULL;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5035
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5036
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5037 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5038 im = GAIM_CONV_IM(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5039
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5040 style = gtk_style_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5041
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5042 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5043 gtk_widget_realize(gtkconv->tab_label);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5044
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5045 pango_font_description_free(style->font_desc);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5046 style->font_desc = pango_font_description_copy(
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5047 gtk_widget_get_style(gtkconv->tab_label)->font_desc);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5048
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5049 if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) {
4577
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5050 style->fg[GTK_STATE_NORMAL].red = 0x4646;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5051 style->fg[GTK_STATE_NORMAL].green = 0xA0A0;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5052 style->fg[GTK_STATE_NORMAL].blue = 0x4646;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5053 style->fg[GTK_STATE_ACTIVE] = style->fg[GTK_STATE_NORMAL];
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5054 }
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5055 else if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) {
4577
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5056 style->fg[GTK_STATE_NORMAL].red = 0xD1D1;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5057 style->fg[GTK_STATE_NORMAL].green = 0x9494;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5058 style->fg[GTK_STATE_NORMAL].blue = 0x0C0C;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5059 style->fg[GTK_STATE_ACTIVE] = style->fg[GTK_STATE_NORMAL];
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 if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) {
4577
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5062 style->fg[GTK_STATE_ACTIVE].red = 0x3131;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5063 style->fg[GTK_STATE_ACTIVE].green = 0x4E4E;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5064 style->fg[GTK_STATE_ACTIVE].blue = 0x6C6C;
4578
73a6162b8d2e [gaim-migrate @ 4859]
Nathan Walp <nwalp@pidgin.im>
parents: 4577
diff changeset
5065 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE];
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5066 }
6405
30166fa1b9a2 [gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents: 6401
diff changeset
5067 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT) {
30166fa1b9a2 [gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents: 6401
diff changeset
5068 style->fg[GTK_STATE_ACTIVE].red = 0x8686;;
30166fa1b9a2 [gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents: 6401
diff changeset
5069 style->fg[GTK_STATE_ACTIVE].green = 0x8282;
30166fa1b9a2 [gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents: 6401
diff changeset
5070 style->fg[GTK_STATE_ACTIVE].blue = 0x7272;
30166fa1b9a2 [gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents: 6401
diff changeset
5071 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE];
30166fa1b9a2 [gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents: 6401
diff changeset
5072 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5073 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT) {
4577
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5074 style->fg[GTK_STATE_ACTIVE].red = 0xDFDF;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5075 style->fg[GTK_STATE_ACTIVE].green = 0x4242;
b57fe4df009b [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
5076 style->fg[GTK_STATE_ACTIVE].blue = 0x1E1E;
4578
73a6162b8d2e [gaim-migrate @ 4859]
Nathan Walp <nwalp@pidgin.im>
parents: 4577
diff changeset
5077 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE];
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5078 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5079
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5080 gtk_widget_set_style(gtkconv->tab_label, style);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5081 g_object_unref(G_OBJECT(style));
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5082
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5083 if(conv == gaim_conv_window_get_active_conversation(win)) {
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5084 update_typing_icon(conv);
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5085 }
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5086
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5087 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5088 else if (type == GAIM_CONV_UPDATE_TOPIC) {
7154
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5089 const char *topic;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5090 chat = GAIM_CONV_CHAT(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5091 gtkchat = gtkconv->u.chat;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5092
7154
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5093 topic = gaim_conv_chat_get_topic(chat);
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5094
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5095 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),topic);
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5096 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text,
f9761ad909d3 [gaim-migrate @ 7721]
Nathan Walp <nwalp@pidgin.im>
parents: 7149
diff changeset
5097 topic, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5098 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5099 else if (type == GAIM_CONV_ACCOUNT_ONLINE ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5100 type == GAIM_CONV_ACCOUNT_OFFLINE) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5101
7476
7085c2c1f0e6 [gaim-migrate @ 8089]
Nathan Walp <nwalp@pidgin.im>
parents: 7447
diff changeset
5102 gaim_gtkconv_update_buttons_by_protocol(conv);
4360
28aa945b7c16 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
5103 generate_send_as_items(win, NULL);
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5104 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs"))
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5105 update_tab_icon(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5106 }
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5107 else if (type == GAIM_CONV_UPDATE_AWAY) {
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5108 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs"))
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5109 update_tab_icon(conv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5110 }
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5111 else if (type == GAIM_CONV_UPDATE_ADD ||
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5112 type == GAIM_CONV_UPDATE_REMOVE) {
4736
a511c4575a0e [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
5113
4397
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
5114 update_convo_add_button(conv);
ae6f3b6a602c [gaim-migrate @ 4666]
Ari Pollak <ari@debian.org>
parents: 4387
diff changeset
5115 }
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5116 else if (type == GAIM_CONV_UPDATE_ICON)
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5117 {
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5118 gaim_gtkconv_update_buddy_icon(conv);
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5119 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5120 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5121
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5122 static GaimConversationUiOps conversation_ui_ops =
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5123 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5124 gaim_gtkconv_destroy, /* destroy_conversation */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5125 gaim_gtkconv_write_chat, /* write_chat */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5126 gaim_gtkconv_write_im, /* write_im */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5127 gaim_gtkconv_write_conv, /* write_conv */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5128 gaim_gtkconv_chat_add_user, /* chat_add_user */
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5129 gaim_gtkconv_chat_add_users, /* chat_add_users */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5130 gaim_gtkconv_chat_rename_user, /* chat_rename_user */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5131 gaim_gtkconv_chat_remove_user, /* chat_remove_user */
6407
d67b6a6ba7d2 [gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents: 6405
diff changeset
5132 gaim_gtkconv_chat_remove_users, /* chat_remove_users */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5133 gaim_gtkconv_set_title, /* set_title */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5134 NULL, /* update_progress */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5135 gaim_gtkconv_updated /* updated */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5136 };
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5137
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5138 GaimConversationUiOps *
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
5139 gaim_gtk_conversations_get_conv_ui_ops(void)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5140 {
4465
43184ae252ed [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
5141 return &conversation_ui_ops;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5142 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5143
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5144 /**************************************************************************
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5145 * Public conversation utility functions
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5146 **************************************************************************/
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5147 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5148 remove_icon(GaimGtkConversation *gtkconv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5149 {
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5150 g_return_if_fail(gtkconv != NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5151
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5152 if (gtkconv->u.im->icon != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5153 gtk_container_remove(GTK_CONTAINER(gtkconv->bbox),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5154 gtkconv->u.im->icon->parent->parent);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5155
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5156 if (gtkconv->u.im->anim != NULL)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5157 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5158
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5159 if (gtkconv->u.im->icon_timer != 0)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5160 g_source_remove(gtkconv->u.im->icon_timer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5161
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5162 if (gtkconv->u.im->iter != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5163 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5164
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5165 gtkconv->u.im->icon_timer = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5166 gtkconv->u.im->icon = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5167 gtkconv->u.im->anim = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5168 gtkconv->u.im->iter = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5169 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5170
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5171 static gboolean
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5172 redraw_icon(gpointer data)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5173 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5174 GaimConversation *conv = (GaimConversation *)data;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5175 GaimGtkConversation *gtkconv;
4359
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 GdkPixbuf *buf;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5178 GdkPixbuf *scale;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5179 GdkPixmap *pm;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5180 GdkBitmap *bm;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5181 gint delay;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5182
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5183 if (!g_list_find(gaim_get_ims(), conv)) {
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5184 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5185 "Conversation not found in redraw_icon. I think this "
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5186 "is a bug.\n");
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5187 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5188 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5189
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5190 gtkconv = GAIM_GTK_CONVERSATION(conv);
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 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5193 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5194
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5195 scale = gdk_pixbuf_scale_simple(buf,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5196 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) /
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5197 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5198 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) /
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5199 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5200 GDK_INTERP_NEAREST);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5201
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5202 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5203 g_object_unref(G_OBJECT(scale));
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5204 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5205 g_object_unref(G_OBJECT(pm));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5206 gtk_widget_queue_draw(gtkconv->u.im->icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5207
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5208 if (bm)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5209 g_object_unref(G_OBJECT(bm));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5210
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5211 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5212
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5213 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5214
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5215 return FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5216 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5217
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5218 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5219 start_anim(GtkObject *obj, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5220 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5221 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5222 int delay;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5223
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5224 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5225 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5226
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5227 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5228
6016
31360de33beb [gaim-migrate @ 6466]
Mark Doliner <markdoliner@pidgin.im>
parents: 6015
diff changeset
5229 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))
31360de33beb [gaim-migrate @ 6466]
Mark Doliner <markdoliner@pidgin.im>
parents: 6015
diff changeset
5230 return;
31360de33beb [gaim-migrate @ 6466]
Mark Doliner <markdoliner@pidgin.im>
parents: 6015
diff changeset
5231
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5232 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5233
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5234 if (gtkconv->u.im->anim)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5235 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5236 conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5237 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5238
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5239 static void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5240 stop_anim(GtkObject *obj, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5241 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5242 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5243
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5244 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5245 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5246
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5247 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5248
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5249 if (gtkconv->u.im->icon_timer != 0)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5250 g_source_remove(gtkconv->u.im->icon_timer);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5251
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5252 gtkconv->u.im->icon_timer = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5253 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5254
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5255 static void
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5256 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv)
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5257 {
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5258 if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5259 start_anim(NULL, conv);
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5260 else
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5261 stop_anim(NULL, conv);
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5262 }
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5263
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5264 static gboolean
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5265 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5266 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5267 GaimGtkConversation *gtkconv;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5268 static GtkWidget *menu = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5269 GtkWidget *button;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5270
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5271 if (e->button != 3 || e->type != GDK_BUTTON_PRESS)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5272 return FALSE;
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 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5275
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5276 /*
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5277 * If a menu already exists, destroy it before creating a new one,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5278 * thus freeing-up the memory it occupied.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5279 */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5280 if (menu != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5281 gtk_widget_destroy(menu);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5282
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5283 menu = gtk_menu_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5284
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5285 if (gtkconv->u.im->anim &&
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5286 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5287 {
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5288 gaim_new_check_item(menu, _("Animate"),
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5289 G_CALLBACK(toggle_icon_animate_cb), conv,
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5290 gtkconv->u.im->icon_timer);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5291 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5292
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5293 button = gtk_menu_item_new_with_label(_("Hide Icon"));
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
5294 g_signal_connect_swapped(G_OBJECT(button), "activate",
4515
646a4904ad32 [gaim-migrate @ 4793]
Christian Hammond <chipx86@chipx86.com>
parents: 4513
diff changeset
5295 G_CALLBACK(remove_icon), gtkconv);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5296 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5297 gtk_widget_show(button);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5298
7300
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5299 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS,
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5300 G_CALLBACK(gaim_gtk_save_icon_dialog), conv,
1bf25732bcbe [gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents: 7298
diff changeset
5301 0, 0, NULL);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5302
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5303 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5304
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5305 return TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5306 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5307
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5308 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5309 gaim_gtkconv_update_buddy_icon(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5310 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5311 GaimGtkConversation *gtkconv;
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5312 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5313
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5314 char filename[256];
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5315 FILE *file;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5316 GError *err = NULL;
5462
97ff9ea63dc2 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5317 gboolean animate = TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5318
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5319 GaimBuddy *buddy;
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5320
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5321 const void *data;
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5322 size_t len;
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5323 int delay;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5324
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5325 GdkPixbuf *buf;
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 GtkWidget *event;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5328 GtkWidget *frame;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5329 GdkPixbuf *scale;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5330 GdkPixmap *pm;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5331 GdkBitmap *bm;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5332 int sf = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5333
5678
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5334 g_return_if_fail(conv != NULL);
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5335 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv));
1d183079b85c [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5336 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
5337
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5338 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5339
5462
97ff9ea63dc2 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5340 if (gtkconv->u.im->icon_timer == 0 && gtkconv->u.im->icon != NULL)
97ff9ea63dc2 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5341 animate = FALSE;
97ff9ea63dc2 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5342
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5343 remove_icon(gtkconv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5344
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5345 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
5346 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5347
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5348 if (gaim_conversation_get_gc(conv) == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5349 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5350
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5351 if(gtkconv->u.im->anim)
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5352 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5353
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5354 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv),
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5355 gaim_conversation_get_name(conv))) != NULL) {
7125
69f5aeec3f5b [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
5356 const char *file;
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7678
diff changeset
5357 if((file = gaim_blist_node_get_string((GaimBlistNode*)buddy, "buddy_icon")))
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5358 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(file, &err);
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5359 }
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5360 else
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5361 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5362 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv));
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5363
6877
19e6230e5303 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5364 if (icon == NULL)
19e6230e5303 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5365 return;
19e6230e5303 [gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
5366
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
5367 data = gaim_buddy_icon_get_data(icon, &len);
4757
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5368
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5369 /* this is such an evil hack, i don't know why i'm even considering it.
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5370 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5371 g_snprintf(filename, sizeof(filename),
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5372 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d",
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5373 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid());
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5374
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5375 if (!(file = fopen(filename, "wb")))
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5376 return;
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5377
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5378 fwrite(data, 1, len, file);
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5379 fclose(file);
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5380
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5381 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err);
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5382 /* make sure we remove the file as soon as possible */
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5383 unlink(filename);
bca72d722ec0 [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5384 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5385
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5386 if (err) {
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5387 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv",
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5388 "Buddy icon error: %s\n", err->message);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5389 g_error_free(err);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5390 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5391
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5392
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5393 if (!gtkconv->u.im->anim)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5394 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5395
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5396 if(gtkconv->u.im->iter)
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5397 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5398
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5399 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5400 gtkconv->u.im->iter = NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5401 delay = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5402 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5403 } else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5404 gtkconv->u.im->iter =
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5405 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5406 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5407 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5408 delay = delay / 10;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5409 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5410
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5411 sf = SCALE(gtkconv->u.im->anim);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5412 scale = gdk_pixbuf_scale_simple(buf,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5413 MAX(gdk_pixbuf_get_width(buf) * sf /
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5414 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5415 MAX(gdk_pixbuf_get_height(buf) * sf /
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5416 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5417 GDK_INTERP_NEAREST);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5418
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5419 if (delay)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5420 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5421 conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5422
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5423 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5424 g_object_unref(G_OBJECT(scale));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5425
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5426 frame = gtk_frame_new(NULL);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5427 gtk_frame_set_shadow_type(GTK_FRAME(frame),
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5428 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5429 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 5);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5430 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5431 gtk_widget_show(frame);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5432
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5433 event = gtk_event_box_new();
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5434 gtk_container_add(GTK_CONTAINER(frame), event);
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
5435 g_signal_connect(G_OBJECT(event), "button-press-event",
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5436 G_CALLBACK(icon_menu), conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5437 gtk_widget_show(event);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5438
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5439 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5440 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5441 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5442 gtk_widget_show(gtkconv->u.im->icon);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5443
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5444 if (!animate ||
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5445 !gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons")) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5446 stop_anim(NULL, conv);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5447 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5448
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5449 g_object_unref(G_OBJECT(pm));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5450
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5451 if (bm)
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5452 g_object_unref(G_OBJECT(bm));
7143
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5453
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5454 /* The buddy icon code needs badly to be fixed. */
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5455 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
0f96eae0a60f [gaim-migrate @ 7710]
Sean Egan <seanegan@pidgin.im>
parents: 7125
diff changeset
5456 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5457 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5458
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5459 void
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5460 gaim_gtkconv_update_font_buttons(void)
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 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5463 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5464 GaimGtkConversation *gtkconv;
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 for (l = gaim_get_ims(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5467 conv = (GaimConversation *)l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5468
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5469 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5470 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5471
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5472 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5473
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5474 if (gtkconv->toolbar.bold != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5475 gtk_widget_set_sensitive(gtkconv->toolbar.bold,
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5476 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5477
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5478 if (gtkconv->toolbar.italic != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5479 gtk_widget_set_sensitive(gtkconv->toolbar.italic,
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5480 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5481
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5482 if (gtkconv->toolbar.underline != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5483 gtk_widget_set_sensitive(gtkconv->toolbar.underline,
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5484 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline"));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5485 }
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
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5488 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5489 gaim_gtkconv_update_font_colors(GaimConversation *conv)
4421
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
5490 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5491 GaimGtkConversation *gtkconv;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5492
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5493 if (!GAIM_IS_GTK_CONVERSATION(conv))
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5494 return;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5495
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5496 gtkconv = GAIM_GTK_CONVERSATION(conv);
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5497
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5498 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"),
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5499 &gtkconv->fg_color);
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5500
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5501 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"),
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5502 &gtkconv->bg_color);
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5503 }
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5504
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5505 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5506 gaim_gtkconv_update_font_face(GaimConversation *conv)
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5507 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5508 GaimGtkConversation *gtkconv;
6141
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5509
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5510 if (!GAIM_IS_GTK_CONVERSATION(conv))
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5511 return;
6141
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5512
4438
9beaf48335fc [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5513 gtkconv = GAIM_GTK_CONVERSATION(conv);
5551
f92bd449fd90 [gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents: 5550
diff changeset
5514
6141
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5515 strncpy(gtkconv->fontface,
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5516 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"),
7c17ebf651e3 [gaim-migrate @ 6615]
Nathan Walp <nwalp@pidgin.im>
parents: 6115
diff changeset
5517 sizeof(gtkconv->fontface));
4421
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
5518 }
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
5519
51d54d2bfbd8 [gaim-migrate @ 4694]
Etan Reisner <deryni@pidgin.im>
parents: 4415
diff changeset
5520 void
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5521 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5522 {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5523 GaimPluginProtocolInfo *prpl_info = NULL;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5524 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5525 GaimGtkWindow *gtkwin = NULL;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5526 GaimGtkConversation *gtkconv;
5563
d5a7852aa0cb [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
5527 GaimConnection *gc;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5528
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5529 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5530 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5531
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5532 gc = gaim_conversation_get_gc(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5533 win = gaim_conversation_get_window(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5534 gtkconv = GAIM_GTK_CONVERSATION(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5535
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5536 if (win != NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5537 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5538
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5539 if (gc == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5540 gtk_widget_set_sensitive(gtkconv->send, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5541
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5542 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5543 gtk_widget_set_sensitive(gtkwin->menu.insert_link, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5544 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5545 }
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
5546 else {
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5547 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5548
4674
c06c9e981592 [gaim-migrate @ 4985]
Nathan Walp <nwalp@pidgin.im>
parents: 4673
diff changeset
5549 gtk_widget_set_sensitive(gtkconv->send, TRUE);
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5550
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5551 if (win != NULL)
4365
3c55b884edef [gaim-migrate @ 4631]
Christian Hammond <chipx86@chipx86.com>
parents: 4364
diff changeset
5552 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6622
diff changeset
5553
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6622
diff changeset
5554 gtk_widget_set_sensitive(gtkconv->toolbar.bgcolor,
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6622
diff changeset
5555 !(gc->flags & GAIM_CONNECTION_NO_BGCOLOR));
4364
b5e95f7f08c9 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
5556 }
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5557
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5558 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5559 if (gc == NULL) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5560 gtk_widget_set_sensitive(gtkconv->info, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5561 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5562 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5563 gtk_widget_set_sensitive(gtkconv->u.im->add, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5564
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5565 if (win != NULL &&
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5566 gaim_conv_window_get_active_conversation(win) == conv) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5567
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5568 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5569 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5570
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5571 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5572 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5573
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5574 gtk_widget_set_sensitive(gtkconv->info,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5575 (prpl_info->get_info != NULL));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5576
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5577 gtk_widget_set_sensitive(gtkconv->toolbar.image,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5578 (prpl_info->options & OPT_PROTO_IM_IMAGE));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5579
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5580 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5581 gtk_widget_set_sensitive(gtkwin->menu.insert_image,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5582 (prpl_info->options & OPT_PROTO_IM_IMAGE));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5583 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5584
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5585 gtk_widget_set_sensitive(gtkconv->u.im->warn,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5586 (prpl_info->warn != NULL));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5587
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5588 gtk_widget_set_sensitive(gtkconv->u.im->block,
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6725
diff changeset
5589 (prpl_info->add_deny != NULL));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5590
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5591 update_convo_add_button(conv);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5592 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5593 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5594 if (gc == NULL) {
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5595 if (gtkconv->u.chat->whisper != NULL)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5596 gtk_widget_set_sensitive(gtkconv->u.chat->whisper, FALSE);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5597
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5598 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5599
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5600 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5601 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5602
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5603 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->chat_send != NULL));
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 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5606 /* gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); */
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5607
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5608 if (gtkconv->u.chat->whisper != NULL)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5609 gtk_widget_set_sensitive(gtkconv->u.chat->whisper,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5610 (prpl_info->chat_whisper != NULL));
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 gtk_widget_set_sensitive(gtkconv->u.chat->invite,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5613 (prpl_info->chat_invite != NULL));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5614 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5615 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5616
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5617 GaimConvWindow *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5618 gaim_gtkwin_get_at_xy(int x, int y)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5619 {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5620 GaimConvWindow *win = NULL;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5621 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5622 GdkWindow *gdkwin;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5623 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5624
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5625 gdkwin = gdk_window_at_pointer(&x, &y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5626
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5627 if (gdkwin)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5628 gdkwin = gdk_window_get_toplevel(gdkwin);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5629
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5630 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5631 win = (GaimConvWindow *)l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5632
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5633 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5634 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5635
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5636 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5637
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5638 if (gdkwin == gtkwin->window->window)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5639 return win;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5640 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5641
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5642 return NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5643 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5644
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5645 int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5646 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
5647 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5648 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5649 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5650 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5651 GtkNotebook *notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5652 GtkWidget *tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5653 gint i, page_num = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5654 gboolean first_visible = TRUE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5655
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5656 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5657 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5658
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5659 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5660 notebook = GTK_NOTEBOOK(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5661
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5662 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5663 x_rel = x - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5664 y_rel = y - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5665
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5666 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5667 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5668 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5669
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5670 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5671 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5672
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5673 if (!GTK_WIDGET_MAPPED(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5674 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5675
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5676 if (first_visible) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5677 first_visible = FALSE;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5678
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5679 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5680 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5681 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5682
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5683 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5684 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
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 if (tab->allocation.x <= x_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5687 if (tab->allocation.x + tab->allocation.width <= x_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5688 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5689 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5690 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5691 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5692 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5693 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5694 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5695 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5696 if (tab->allocation.y <= y_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5697 if (tab->allocation.y + tab->allocation.height <= y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5698 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5699 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5700 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5701 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5702 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5703 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5704 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5705 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5706
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5707 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5708 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5709
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5710 return page_num;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5711 }
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 int
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5714 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
5715 {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5716 GaimGtkWindow *gtkwin;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5717 GList *l;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5718 gint nb_x, nb_y, x_rel, y_rel;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5719 GtkNotebook *notebook;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5720 GtkWidget *tab;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5721 gint i, page_num = 0;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5722
4398
ba901bb913e5 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5723 if (!GAIM_IS_GTK_WINDOW(win))
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5724 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5725
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5726 gtkwin = GAIM_GTK_WINDOW(win);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5727 notebook = GTK_NOTEBOOK(gtkwin->notebook);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5728
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5729 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5730 x_rel = x - nb_x;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5731 y_rel = y - nb_y;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5732
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5733 for (l = gaim_conv_window_get_conversations(win), i = 0;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5734 l != NULL;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5735 l = l->next, i++) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5736
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5737 GaimConversation *conv = l->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5738 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5739
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5740 if (!GTK_WIDGET_MAPPED(tab))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5741 continue;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5742
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5743 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5744 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5745
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5746 if (tab->allocation.x <= x_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5747 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5748 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5749 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5750 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5751 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5752 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5753 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5754 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5755 else {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5756 if (tab->allocation.y <= y_rel) {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5757 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5758 page_num = i + 1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5759 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5760 page_num = i;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5761 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5762 else
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5763 break;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5764 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5765 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5766
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5767 if (i == gaim_conv_window_get_conversation_count(win) + 1)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5768 return -1;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5769
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5770 return page_num;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5771 }
4940
6f9acbfc8a3d [gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents: 4939
diff changeset
5772
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5773 static void
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5774 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value,
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5775 gpointer data)
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5776 {
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5777 if (value)
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5778 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5779 GDK_Escape, 0, TRUE);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5780 else
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5781 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"),
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5782 GDK_W, GDK_CONTROL_MASK, TRUE);
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5783 }
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5784
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5785 static void
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5786 icons_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value,
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
5787 gpointer data)
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5788 {
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5789 GList *l;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5790 GaimConversation *conv;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5791 GaimGtkConversation *gtkconv;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5792
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5793 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5794 conv = (GaimConversation *)l->data;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5795
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5796 if (!GAIM_IS_GTK_CONVERSATION(conv))
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5797 continue;
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5798
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5799 gtkconv = GAIM_GTK_CONVERSATION(conv);
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5800
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5801 if (value) {
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5802 update_tab_icon(conv);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5803 gtk_widget_show(gtkconv->icon);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
5804 gtk_widget_show(gtkconv->menu_icon);
6440
39809cff8fd9 [gaim-migrate @ 6948]
Etan Reisner <deryni@pidgin.im>
parents: 6433
diff changeset
5805 }
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
5806 else {
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5807 gtk_widget_hide(gtkconv->icon);
6771
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
5808 gtk_widget_hide(gtkconv->menu_icon);
06048ac9eb49 [gaim-migrate @ 7308]
Jesse Farmer
parents: 6760
diff changeset
5809 }
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5810 }
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5811 }
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5812
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
5813 static void
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5814 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
5815 gpointer data)
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5816 {
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5817 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5818 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5819 GaimGtkConversation *gtkconv;
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5820
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5821 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5822 conv = (GaimConversation *)l->data;
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5823
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5824 if (!GAIM_IS_GTK_CONVERSATION(conv))
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5825 continue;
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5826
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5827 gtkconv = GAIM_GTK_CONVERSATION(conv);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5828
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5829 if (value)
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5830 gtk_widget_show(gtkconv->close);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5831 else
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5832 gtk_widget_hide(gtkconv->close);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5833 }
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5834 }
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5835
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5836 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5837 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5838 gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5839 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5840 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5841 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5842 GaimGtkConversation *gtkconv;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5843
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5844 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5845 conv = (GaimConversation *)l->data;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5846
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5847 if (!GAIM_IS_GTK_CONVERSATION(conv))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5848 continue;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5849
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5850 gtkconv = GAIM_GTK_CONVERSATION(conv);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5851
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5852 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
5853 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5854 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5855
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5856 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5857 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5858 gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5859 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5860 #ifdef USE_GTKSPELL
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5861 GList *cl;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5862 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5863 GaimGtkConversation *gtkconv;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5864 GtkSpell *spell;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5865
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5866 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
5867
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5868 conv = (GaimConversation *)cl->data;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5869
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5870 if (!GAIM_IS_GTK_CONVERSATION(conv))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5871 continue;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5872
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5873 gtkconv = GAIM_GTK_CONVERSATION(conv);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5874
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5875 if (value)
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7476
diff changeset
5876 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry));
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5877 else {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5878 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry));
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5879 gtkspell_detach(spell);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5880 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5881 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5882 #endif
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5883 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5884
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5885 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5886 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5887 gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5888 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5889 GList *cl;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5890 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5891 GaimGtkConversation *gtkconv;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5892
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5893 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5894 conv = (GaimConversation *)cl->data;
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5895
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5896 if (!GAIM_IS_GTK_CONVERSATION(conv))
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5897 continue;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5898
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5899 gtkconv = GAIM_GTK_CONVERSATION(conv);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5900
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5901 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value));
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5902 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5903 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5904
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5905 static void
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5906 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5907 gpointer data)
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5908 {
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5909 GList *l;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5910 GtkPositionType pos;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5911 GaimConvWindow *win;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5912 GaimGtkWindow *gtkwin;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5913
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5914 pos = GPOINTER_TO_INT(value);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5915
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5916 for (l = gaim_get_windows(); l != NULL; l = l->next) {
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7108
diff changeset
5917 win = (GaimConvWindow *)l->data;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5918
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5919 if (!GAIM_IS_GTK_WINDOW(win))
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5920 continue;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5921
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5922 gtkwin = GAIM_GTK_WINDOW(win);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5923
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5924 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5925 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5926 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5927
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5928 static void
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5929 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type,
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5930 gpointer value, gpointer data)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5931 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5932 GList *l;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5933 GaimConversation *conv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5934 GaimGtkConversation *gtkconv;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5935 GaimConvWindow *win;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5936 GaimGtkWindow *gtkwin;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5937
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5938 for (l = gaim_get_conversations(); l != NULL; l = l->next)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5939 {
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5940 conv = (GaimConversation *)l->data;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5941
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5942 if (!GAIM_IS_GTK_CONVERSATION(conv))
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5943 continue;
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5944
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5945 gtkconv = GAIM_GTK_CONVERSATION(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5946 win = gaim_conversation_get_window(conv);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5947 gtkwin = GAIM_GTK_WINDOW(win);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5948
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7326
diff changeset
5949 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5950 gtk_check_menu_item_set_active(
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5951 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar),
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5952 gtkconv->show_formatting_toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5953
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5954 if (gtkconv->show_formatting_toolbar)
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5955 gtk_widget_show(gtkconv->toolbar.toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5956 else
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5957 gtk_widget_hide(gtkconv->toolbar.toolbar);
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5958 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5959 }
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5960
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
5961 static void
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5962 im_button_type_pref_cb(const char *name, GaimPrefType type,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5963 gpointer value, gpointer data)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5964 {
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5965 GList *l;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5966 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5967 GaimGtkConversation *gtkconv;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5968
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5969 for (l = gaim_get_ims(); l != NULL; l = l->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5970 conv = (GaimConversation *)l->data;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5971 gtkconv = GAIM_GTK_CONVERSATION(conv);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5972
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5973 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send));
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5974 }
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5975 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5976
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5977 static void
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5978 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type,
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5979 gpointer value, gpointer data)
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5980 {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5981 GList *l;
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 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
5984 return;
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5985
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5986 if (value) {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5987 for (l = gaim_get_ims(); l != NULL; l = l->next)
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5988 start_anim(NULL, (GaimConversation *)l->data);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5989 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5990 else {
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5991 for (l = gaim_get_ims(); l != NULL; l = l->next)
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5992 stop_anim(NULL, (GaimConversation *)l->data);
5674
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 }
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5995
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5996 static void
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5997 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
5998 gpointer data)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5999 {
5881
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6000 GList *l;
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6001
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6002 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6003 GaimConversation *conv = l->data;
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6004
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6005 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6006 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon);
5f080ec88429 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
6007 }
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6008 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6009
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5680
diff changeset
6010 static void
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6011 chat_button_type_pref_cb(const char *name, GaimPrefType type, gpointer value,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6012 gpointer data)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6013 {
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6014 GList *l;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6015 GaimConnection *g;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6016 GtkWidget *parent;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6017 GaimConversationType conv_type = GAIM_CONV_CHAT;
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6018 GSList *bcs;
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6019 GaimConversation *conv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6020 GaimGtkConversation *gtkconv;
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6021 GaimGtkWindow *gtkwin;
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6022
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6023 for (l = gaim_connections_get_all(); l != NULL; l = l->next) {
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6024
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6025 g = (GaimConnection *)l->data;
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 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
6028 conv = (GaimConversation *)bcs->data;
5675
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 if (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT)
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6031 continue;
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
6032
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6033 if (!GAIM_IS_GTK_CONVERSATION(conv))
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6034 continue;
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 gtkconv = GAIM_GTK_CONVERSATION(conv);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6037 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6038 parent = gtk_widget_get_parent(gtkconv->send);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6039
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6040 gtkconv->send =
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6041 gaim_gtk_change_text(_("Send"),
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6042 gtkconv->send, GAIM_STOCK_SEND, conv_type);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6043 gtkconv->u.chat->invite =
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6044 gaim_gtk_change_text(_("Invite"),
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6045 gtkconv->u.chat->invite,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6046 GAIM_STOCK_INVITE, conv_type);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6047
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6048 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6049 conv_type);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6050 gtk_box_pack_end(GTK_BOX(parent), gtkconv->u.chat->invite,
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6051 FALSE, FALSE, 0);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6052
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6053 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->send, 0);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6054
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6055 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6056 G_CALLBACK(send_cb), conv);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6057 g_signal_connect(G_OBJECT(gtkconv->u.chat->invite), "clicked",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6058 G_CALLBACK(invite_cb), conv);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6059
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6060 gtk_button_set_relief(GTK_BUTTON(gtkconv->send),
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6061 GTK_RELIEF_NONE);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6062 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.chat->invite),
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6063 GTK_RELIEF_NONE);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6064
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6065 gaim_gtkconv_update_buttons_by_protocol(conv);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6066 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6067 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6068 }
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6069
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6070 static void
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6071 conv_placement_pref_cb(const char *name, GaimPrefType type,
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6072 gpointer value, gpointer data)
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6073 {
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6074 GaimConvPlacementFunc func;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6075
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6076 if (strcmp(name, "/gaim/gtk/conversations/placement"))
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6077 return;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6078
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6079 func = gaim_conv_placement_get_fnc(value);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6080
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6081 if (func == NULL)
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6082 return;
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6083
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6084 gaim_conv_placement_set_current_func(func);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6085 }
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6086
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6087 void
7035
76bca80cd91d [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7008
diff changeset
6088 gaim_gtk_conversations_init(void)
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6089 {
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6090 /* Conversations */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6091 gaim_prefs_add_none("/gaim/gtk/conversations");
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
6092 gaim_prefs_add_bool("/gaim/gtk/conversations/icons_on_tabs", TRUE);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6093 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6094 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6095 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6096 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6097 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6098 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6099 gaim_prefs_add_bool("/gaim/gtk/conversations/send_strikethrough", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6100 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6101 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6102 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6103 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6104 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6105 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6106 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6107 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6108 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6109 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6110 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6111 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6112 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6113 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE);
5743
2fef1ca3c13f [gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
6114 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6115 gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE);
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6116 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last");
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6117 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6118 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6119 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", "");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6120 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6121 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6122 gaim_prefs_add_int("/gaim/gtk/conversations/tab_side", GTK_POS_TOP);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6123
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6124 /* Conversations -> Chat */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6125 gaim_prefs_add_none("/gaim/gtk/conversations/chat");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6126 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type",
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6127 GAIM_BUTTON_TEXT_IMAGE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6128 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6129 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/old_tab_complete", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6130 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/raise_on_events", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6131 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6132 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6133 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6134 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6135
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6136 /* Conversations -> IM */
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6137 gaim_prefs_add_none("/gaim/gtk/conversations/im");
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6138 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type",
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6139 GAIM_BUTTON_TEXT_IMAGE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6140 gaim_prefs_add_bool("/gaim/gtk/conversations/im/animate_buddy_icons", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6141 gaim_prefs_add_bool("/gaim/gtk/conversations/im/hide_on_send", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6142 gaim_prefs_add_bool("/gaim/gtk/conversations/im/raise_on_events", FALSE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6143 gaim_prefs_add_bool("/gaim/gtk/conversations/im/show_buddy_icons", TRUE);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6144 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6145 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6146 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50);
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6147
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6148 /* Connect callbacks. */
6398
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
6149 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes",
594202f2aead [gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents: 6395
diff changeset
6150 escape_closes_pref_cb, NULL);
6392
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
6151 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs",
3db2b3c7b5aa [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
6152 icons_on_tabs_pref_cb, NULL);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6153 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs",
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6154 close_on_tabs_pref_cb, NULL);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6155 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6156 show_smileys_pref_cb, NULL);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6157 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6158 show_timestamps_pref_cb, NULL);
7326
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6159 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar",
599c9e8c9da4 [gaim-migrate @ 7912]
Nathan Fredrickson <nathan@silverorange.com>
parents: 7322
diff changeset
6160 show_formatting_toolbar_pref_cb, NULL);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6161 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6162 spellcheck_pref_cb, NULL);
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6163 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6164 tab_side_pref_cb, NULL);
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6165
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6166 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement",
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6167 conv_placement_pref_cb, NULL);
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6168 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement");
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6169
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
6170
6725
21fa06d508c8 [gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents: 6695
diff changeset
6171
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6172 /* IM callbacks */
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6173 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6174 im_button_type_pref_cb, NULL);
5674
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6175 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6176 animate_buddy_icons_pref_cb, NULL);
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6177 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons",
44742bed404f [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
6178 show_buddy_icons_pref_cb, NULL);
5675
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6179
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6180
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6181 /* Chat callbacks */
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6182 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type",
c4bd3b2070b5 [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
6183 chat_button_type_pref_cb, NULL);
5673
47f654fb5134 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
6184 }

mercurial