annotate src/gtkconv.c @ 5975:80e5258226f3

[gaim-migrate @ 6422] I made some changes so that, if you have 2 buddies in your buddy list with the same name, and you delete one by right clicking on it in the blist, gaim will delete the one you right clicked rather than an arbitrary one. I think the hash table that speeds up stuff in gtkblist.c has problems with having the same buddy in a group twice. Someone should look into that. Like, right now it treats buddy name/group name/account as a unique key, but right now that is not a unique key. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sun, 29 Jun 2003 20:57:28 +0000
parents 5fb6bd688a5b
children 66a8e4938e17
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1 /**
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2 * @file gtkconv.h GTK+ Conversation API
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
3 * @ingroup gtkui
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
5 * Copyright (C) 2002-2003 Christian Hammond <chipx86@gnupdate.org>
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
5fb47ec9bfe4 [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
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * (at your option) any later version.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * GNU General Public License for more details.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
22 #include "internal.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
23
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 #ifndef _WIN32
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
25 # include <X11/Xlib.h>
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
26 #endif
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
27
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 #ifdef USE_GTKSPELL
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
29 # include <gtkspell/gtkspell.h>
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30 #endif
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
31
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
32 #include <gdk/gdkkeysyms.h>
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
33
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
34 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
35 #include "log.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
36 #include "multi.h"
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
37 #include "notify.h"
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
38 #include "prefs.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
39 #include "prpl.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
40 #include "sound.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
41 #include "util.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
42
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
43 #include "dnd-hints.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
44 #include "gtkblist.h"
5717
1d140b31d4b3 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
45 #include "gtkconv.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
46 #include "gtkimhtml.h"
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
47 #include "gtkpounce.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
48 #include "gtkutils.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
49 #include "stock.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
50
5717
1d140b31d4b3 [gaim-migrate @ 6138]
Nathan Walp <nwalp@pidgin.im>
parents: 5681
diff changeset
51 #include "ui.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
52
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
53 /* XXX */
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
54 #include "gaim.h"
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
55
4373
dcc6c130c6d9 [gaim-migrate @ 4639]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4370
diff changeset
56 #ifdef _WIN32
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
57 # include "wspell.h"
4373
dcc6c130c6d9 [gaim-migrate @ 4639]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4370
diff changeset
58 #endif
dcc6c130c6d9 [gaim-migrate @ 4639]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4370
diff changeset
59
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
60 #define AUTO_RESPONSE "&lt;AUTO-REPLY&gt; : "
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
61
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
62 static char nick_colors[][8] = {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
63 "#ba55d3", /* Medium Orchid */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
64 "#ee82ee", /* Violet */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65 "#c715b4", /* Medium Violet Red */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66 "#ff69b4", /* Hot Pink */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
67 "#ff6347", /* Tomato */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
68 "#fa8c00", /* Dark Orange */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69 "#fa8072", /* Salmon */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70 "#b22222", /* Fire Brick */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71 "#f4a460", /* Sandy Brown */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 "#cd5c5c", /* Indian Red */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 "#bc8f8f", /* Rosy Brown */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74 "#f0e68c", /* Khaki */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 "#bdb76b", /* Dark Khaki */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
76 "#228b22", /* Forest Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77 "#9acd32", /* Yellow Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
78 "#32cd32", /* Lime Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 "#3cb371", /* Medium Sea Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 "#2e8b57", /* Sea Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
81 "#8fbc8f", /* Dark Sea Green */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 "#66cdaa", /* Medium Aquamarine */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 "#5f9ea0", /* Cadet Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 "#48d1cc", /* Medium Turquoise */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 "#00ced1", /* Dark Turquoise */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86 "#4682b4", /* Stell Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 "#00bfff", /* Deep Sky Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88 "#1690ff", /* Dodger Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89 "#4169ff", /* Royal Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
90 "#6a5acd", /* Slate Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91 "#6495ed", /* Cornflower Blue */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 "#708090", /* Slate gray */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 "#ffdead", /* Navajo White */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97 #define SCALE(x) \
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 ((gdk_pixbuf_animation_get_width(x) <= 48 && \
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 gdk_pixbuf_animation_get_height(x) <= 48) ? 48 : 50)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
100
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
101 typedef struct
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
103 GtkWidget *window;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
105 GtkWidget *entry;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
106 GtkWidget *message;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
107
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
108 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
109
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
110 } InviteBuddyInfo;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 char fontface[128] = { 0 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113 int fontsize = 3;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115 static GtkWidget *invite_dialog = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
116
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117 /* Prototypes. <-- because Paco-Paco hates this comment. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118 static void check_everything(GtkTextBuffer *buffer);
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
119 static void set_toggle(GtkWidget *tb, gboolean active);
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
120 static void move_next_tab(GaimConversation *conv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
121 static void do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
122 static void do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
123 static void do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
124 static void do_small(GtkWidget *small, GaimGtkConversation *gtkconv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
125 static void do_normal(GtkWidget *small, GaimGtkConversation *gtkconv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
126 static void do_big(GtkWidget *small, GaimGtkConversation *gtkconv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
127 static void toggle_font(GtkWidget *font, GaimConversation *conv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
128 static void toggle_fg_color(GtkWidget *color, GaimConversation *conv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
129 static void toggle_bg_color(GtkWidget *color, GaimConversation *conv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
130 static void got_typing_keypress(GaimConversation *conv, gboolean first);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
131 static GList *generate_invite_user_names(GaimConnection *gc);
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
132 static void add_chat_buddy_common(GaimConversation *conv,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
133 const char *name, int pos);
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
134 static void tab_complete(GaimConversation *conv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
135 static void update_typing_icon(GaimConversation *conv);
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
136 static gboolean update_send_as_selection(GaimWindow *win);
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
137 static char *item_factory_translate_func (const char *path, gpointer func_data);
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
138 static void save_convo(GtkWidget *save, GaimConversation *c);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
141 * Callbacks
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
142 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
143 static void
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
144 do_save_convo(GObject *obj, GtkWidget *wid)
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
145 {
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
146 GaimConversation *c = g_object_get_data(obj, "gaim_conversation");
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
147 const char *filename;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
148 FILE *fp;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
149
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
150 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
151
5966
5fb6bd688a5b [gaim-migrate @ 6413]
Mark Doliner <mark@kingant.net>
parents: 5959
diff changeset
152 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid)))
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
153 return;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
154
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
155 if (!((gaim_conversation_get_type(c) != GAIM_CONV_CHAT &&
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
156 g_list_find(gaim_get_ims(), c)) ||
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
157 (gaim_conversation_get_type(c) == GAIM_CONV_CHAT &&
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
158 g_list_find(gaim_get_chats(), c))))
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
159 filename = NULL;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
160
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
161 gtk_widget_destroy(wid);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
162
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
163 if (filename == NULL)
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
164 return;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
165
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
166 if ((fp = fopen(filename, "w+")) == NULL)
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
167 return;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
168
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
169 fprintf(fp, "%s", c->history->str);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
170
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
171 fclose(fp);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
172 }
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
173
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
174 static void
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
175 do_insert_image_cb(GObject *obj, GtkWidget *wid)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
176 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
177 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
178 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
179 GaimIm *im;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
180 const char *name;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
181 const char *filename;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
182 char *buf;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
183 struct stat st;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
184 int id;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
185
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
186 conv = g_object_get_data(G_OBJECT(wid), "user_data");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
187 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
188 im = GAIM_IM(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
189 name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
190 id = g_slist_length(im->images) + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191
5966
5fb6bd688a5b [gaim-migrate @ 6413]
Mark Doliner <mark@kingant.net>
parents: 5959
diff changeset
192 if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(wid)))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
193 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
194
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
195 gtk_widget_destroy(wid);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
196
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
197 if (!name)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
198 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
199
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
200 if (stat(name, &st) != 0) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
201 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
202 "Could not stat image %s\n", name);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
203 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
205
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206 filename = name;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
207 while (strchr(filename, '/'))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
208 filename = strchr(filename, '/') + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
209
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
210 buf = g_strdup_printf("<IMG SRC=\"file://%s\" ID=\"%d\" DATASIZE=\"%d\">",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211 filename, id, (int)st.st_size);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
212 im->images = g_slist_append(im->images, g_strdup(name));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
213 gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(gtkconv->entry_buffer),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
214 buf, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
215 g_free(buf);
5046
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
216
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
217 set_toggle(gtkconv->toolbar.image, FALSE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
218 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
219
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
220 static gint
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
221 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
222 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
223 GaimWindow *win = (GaimWindow *)d;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
224
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
225 gaim_window_destroy(win);
4361
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
226
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
227 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
228 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
229
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
230 static gint
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
231 close_conv_cb(GtkWidget *w, gpointer d)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
232 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
233 GaimConversation *conv = (GaimConversation *)d;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
234
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
235 gaim_conversation_destroy(conv);
4361
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
236
25d5b2a7545f [gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents: 4360
diff changeset
237 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
238 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
239
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
240 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
241 cancel_insert_image_cb(GtkWidget *unused, GaimGtkConversation *gtkconv)
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
242 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
243 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image),
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
244 FALSE);
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
245
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
246 if (gtkconv->dialogs.image)
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
247 gtk_widget_destroy(gtkconv->dialogs.image);
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
248
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
249 gtkconv->dialogs.image = NULL;
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
250 }
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
251
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
252 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
253 insert_image_cb(GtkWidget *save, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
254 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
255 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
256 char buf[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
257 GtkWidget *window;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
258
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
259 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
260
5046
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
261 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))) {
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
262 window = gtk_file_selection_new(_("Gaim - Insert Image"));
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
263 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir());
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
264 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
265
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
266 g_object_set_data(G_OBJECT(window), "user_data", conv);
5046
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
267 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
268 "clicked", G_CALLBACK(do_insert_image_cb), window);
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
269 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
270 "clicked", G_CALLBACK(cancel_insert_image_cb), gtkconv);
5046
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
271
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
272 gtk_widget_show(window);
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
273 gtkconv->dialogs.image = window;
5046
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
274 } else {
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
275 gtk_widget_grab_focus(gtkconv->entry);
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
276 if(gtkconv->dialogs.image)
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
277 gtk_widget_destroy(gtkconv->dialogs.image);
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5105
diff changeset
278 gtkconv->dialogs.image = NULL;
5046
44945824ba60 [gaim-migrate @ 5394]
Nathan Walp <nwalp@pidgin.im>
parents: 5024
diff changeset
279 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
282 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
283 insert_link_cb(GtkWidget *w, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
285 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
286
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
287 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
288
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
289 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
290 show_insert_link(gtkconv->toolbar.link, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291 else if (gtkconv->dialogs.link)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
292 cancel_link(gtkconv->toolbar.link, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
293 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
294 gaim_gtk_advance_past(gtkconv, "<A HREF>", "</A>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
295
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
296 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
297 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
298
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
299 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
300 insert_smiley_cb(GtkWidget *smiley, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
301 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
302 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
303
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
304 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
305
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
306 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
307 show_smiley_dialog(conv, smiley);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
308 else if (gtkconv->dialogs.smiley)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
309 close_smiley_dialog(smiley, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
310
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
312 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
313
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314 static gboolean
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
315 entry_key_pressed_cb_1(GtkTextBuffer *buffer)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
316 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
317 check_everything(buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
318
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
319 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
320 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
321
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
322 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
323 send_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
324 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
325 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
326 char *buf, *buf2;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
327 GtkTextIter start_iter, end_iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
328 int limit;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
329 GaimConnection *gc = gaim_conversation_get_gc(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
330
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
331 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
332
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
333 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
334 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end_iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
335 buf2 = gtk_text_buffer_get_text(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
336 &start_iter, &end_iter, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
337
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
338 set_toggle(gtkconv->toolbar.bold, FALSE);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
339 set_toggle(gtkconv->toolbar.italic, FALSE);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
340 set_toggle(gtkconv->toolbar.underline, FALSE);
5049
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
341 set_toggle(gtkconv->toolbar.larger_size, FALSE);
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
342 set_toggle(gtkconv->toolbar.normal_size, FALSE);
5049
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
343 set_toggle(gtkconv->toolbar.smaller_size,FALSE);
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
344 set_toggle(gtkconv->toolbar.font, FALSE);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
345 set_toggle(gtkconv->toolbar.fgcolor, FALSE);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
346 set_toggle(gtkconv->toolbar.bgcolor, FALSE);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
347 set_toggle(gtkconv->toolbar.link, FALSE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
348
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
349 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
350
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
351 limit = 32 * 1024; /* This will be done again in gaim_im_send. *shrug* */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
352
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
353 buf = g_malloc(limit);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
354 strncpy(buf, buf2, limit);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
355
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
356 g_free(buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
357
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
358 if (strlen(buf) == 0) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
359 g_free(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
360
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
361 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
362 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
364 buf2 = g_malloc(limit);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
365
4505
577e6d268340 [gaim-migrate @ 4780]
Nathan Walp <nwalp@pidgin.im>
parents: 4491
diff changeset
366 if (gc && gc->flags & OPT_CONN_HTML) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
367 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
368 g_snprintf(buf2, limit, "<B>%s</B>", buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
369 strcpy(buf, buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
370 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
371
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
372 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
373 g_snprintf(buf2, limit, "<I>%s</I>", buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
374 strcpy(buf, buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
375 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
376
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
377 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
378 g_snprintf(buf2, limit, "<U>%s</U>", buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
379 strcpy(buf, buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
380 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
381
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
382 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_strikethrough")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
383 g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 strcpy(buf, buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
386
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
387 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") ||
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
388 gtkconv->has_font) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
389
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
390 g_snprintf(buf2, limit,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391 "<FONT FACE=\"%s\">%s</FONT>", gtkconv->fontface, buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392 strcpy(buf, buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
393 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
394
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
395 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
396 g_snprintf(buf2, limit,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
397 "<FONT SIZE=\"%d\">%s</FONT>", fontsize, buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
398 strcpy(buf, buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
399 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
400
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
401 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
402 g_snprintf(buf2, limit,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
403 "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
404 gtkconv->fg_color.red / 256,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
405 gtkconv->fg_color.green / 256,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
406 gtkconv->fg_color.blue / 256, buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
407 strcpy(buf, buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
408 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
409
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
410 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
411 g_snprintf(buf2, limit,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
412 "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>",
4421
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
413 gtkconv->bg_color.red / 256,
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
414 gtkconv->bg_color.green / 256,
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
415 gtkconv->bg_color.blue / 256, buf);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
416 strcpy(buf, buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
417 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
418 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
419
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
420 g_free(buf2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
421
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
422 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
423 gaim_im_send(GAIM_IM(conv), buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
424 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
425 gaim_chat_send(GAIM_CHAT(conv), buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
426
5629
e2ff6f156917 [gaim-migrate @ 6036]
Nathan Walp <nwalp@pidgin.im>
parents: 5582
diff changeset
427 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
428 gaim_window_hide(gaim_conversation_get_window(conv));
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
429
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
430 g_free(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
431
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
432 gtk_text_buffer_set_text(gtkconv->entry_buffer, "", -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
433 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
434
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
435 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
436 add_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
437 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
438 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
439 struct buddy *b;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
440 const char *name;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
441
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
442 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
443 name = gaim_conversation_get_name(conv);
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4685
diff changeset
444 b = gaim_find_buddy(gc->account, name);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
445
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
446 if (b != NULL)
5975
80e5258226f3 [gaim-migrate @ 6422]
Mark Doliner <mark@kingant.net>
parents: 5966
diff changeset
447 show_confirm_del(b);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
448 else if (gc != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
449 show_add_buddy(gc, (char *)name, NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
450
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
451 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
452 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
453
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
454 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
455 info_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
456 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
457 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
458
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
459 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
460
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
461 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
462 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
463 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
464 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
465 GtkTreeSelection *sel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
466 const char *name;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
467
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
468 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
469
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
470 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
471 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
472
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
473 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
474 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
475 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
476 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
477
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
478 serv_get_info(gaim_conversation_get_gc(conv), (char *)name);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
479 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
480 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
481 serv_get_info(gaim_conversation_get_gc(conv),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
482 (char *)gaim_conversation_get_name(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
483
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
484 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
485 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
486 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
487
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
488 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
489 warn_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
490 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
491 show_warn_dialog(gaim_conversation_get_gc(conv),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
492 (char *)gaim_conversation_get_name(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
493
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
494 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
495 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
496
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
497 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
498 block_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
499 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
500 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
501
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
502 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
503
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
504 if (gc != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
505 show_add_perm(gc, (char *)gaim_conversation_get_name(conv), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
506
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
507 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
508 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
509
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
510 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
511 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
512 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
513 const char *buddy, *message;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
514 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
515
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
516 gtkconv = GAIM_GTK_CONVERSATION(info->conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
517
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
518 if (resp == GTK_RESPONSE_OK) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
520 message = gtk_entry_get_text(GTK_ENTRY(info->message));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
521
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
522 if (!g_ascii_strcasecmp(buddy, "")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
523 g_free(info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
524
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
525 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
526 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
527
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
528 serv_chat_invite(gaim_conversation_get_gc(info->conv),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
529 gaim_chat_get_id(GAIM_CHAT(info->conv)),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
530 message, buddy);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
531 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
532
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
533 gtk_widget_destroy(invite_dialog);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
534 invite_dialog = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
535
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
536 g_free(info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
537 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
538
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
539 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
540 invite_cb(GtkWidget *widget, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
542 InviteBuddyInfo *info = NULL;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
544 if (invite_dialog == NULL) {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
545 GaimConnection *gc;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
546 GaimWindow *win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
547 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
548 GtkWidget *label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
549 GtkWidget *vbox, *hbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
550 GtkWidget *table;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
551 GtkWidget *img;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
552
5024
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 5012
diff changeset
553 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
554
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
555 info = g_new0(InviteBuddyInfo, 1);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
556 info->conv = conv;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
557
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
558 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
559 win = gaim_conversation_get_window(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
560 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
561
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
562 /* Create the new dialog. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
563 invite_dialog = gtk_dialog_new_with_buttons(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
564 _("Gaim - Invite Buddy Into Chat Room"),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
565 GTK_WINDOW(gtkwin->window),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
566 GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
567 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
568
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
569 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
570 GTK_RESPONSE_OK);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
571 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
572 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
573 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
574
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
575 /* Setup the outside spacing. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
576 vbox = GTK_DIALOG(invite_dialog)->vbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
577
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
578 gtk_box_set_spacing(GTK_BOX(vbox), 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
579 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
580
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
581 /* Setup the inner hbox and put the dialog's icon in it. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
582 hbox = gtk_hbox_new(FALSE, 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
583 gtk_container_add(GTK_CONTAINER(vbox), hbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
584 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
585 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
586
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
587 /* Setup the right vbox. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
588 vbox = gtk_vbox_new(FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
589 gtk_container_add(GTK_CONTAINER(hbox), vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
590
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
591 /* Put our happy label in it. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
592 label = gtk_label_new(_("Please enter the name of the user you wish "
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
593 "to invite, along with an optional invite "
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
594 "message."));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
595 gtk_widget_set_size_request(label, 350, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
596 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
597 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
598 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
599
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
600 /* hbox for the table, and to give it some spacing on the left. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
601 hbox = gtk_hbox_new(FALSE, 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
602 gtk_container_add(GTK_CONTAINER(vbox), hbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
603
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
604 /* Setup the table we're going to use to lay stuff out. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
605 table = gtk_table_new(2, 2, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
606 gtk_table_set_row_spacings(GTK_TABLE(table), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
607 gtk_table_set_col_spacings(GTK_TABLE(table), 6);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
608 gtk_container_set_border_width(GTK_CONTAINER(table), 12);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
609 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
610
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
611 /* Now the Buddy label */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
612 label = gtk_label_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
613 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
614 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
615 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
616
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
617 /* Now the Buddy drop-down entry field. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
618 info->entry = gtk_combo_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
619 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
620 gtk_entry_set_activates_default(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
621 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
622
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
623 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
624 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
625
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
626 /* Fill in the names. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
627 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
628 generate_invite_user_names(gc));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
629
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
630
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
631 /* Now the label for "Message" */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
632 label = gtk_label_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
633 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
634 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
635 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
636
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
637
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
638 /* And finally, the Message entry field. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
639 info->message = gtk_entry_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
640 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
641
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
642 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
643 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
644
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
645 /* Connect the signals. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
646 g_signal_connect(G_OBJECT(invite_dialog), "response",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
647 G_CALLBACK(do_invite), info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
648 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
649
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
650 gtk_widget_show_all(invite_dialog);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
651
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
652 if (info != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
653 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
654 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
655
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
656 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
657 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
658 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
659 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
660
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
661 save_convo(NULL, gaim_window_get_active_conversation(win));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
662 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
663
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
664 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
665 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
666 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
667 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
668 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
669
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
670 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
671
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
672 conv_show_log(NULL, (char *)gaim_conversation_get_name(conv));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
673 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
674
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
675 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
676 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
677 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
678 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
679 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
680
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
681 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
682
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
683 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
684 gaim_conversation_get_name(conv), NULL);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
685 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
686
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
687 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
688 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
689 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
690 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
691 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
692 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
693
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
694 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
695 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
696
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
697 show_insert_link(gtkconv->toolbar.link, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
698 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
699
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
700 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
701 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
702 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
703 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
704 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
705
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
706 gtkconv = GAIM_GTK_CONVERSATION(gaim_window_get_active_conversation(win));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
707
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
708 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
709 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image)));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
710 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
711
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
712 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
713 menu_alias_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
714 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
715 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
716 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
717 struct buddy *b;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
718
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
719 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
720
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
721 b = gaim_find_buddy(gaim_conversation_get_account(conv),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
722 gaim_conversation_get_name(conv));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
723
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
724 if (b != NULL) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
725 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
726 alias_dialog_bud(b);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
727 #if 0
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
728 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
729 alias_dialog_chat((struct chat *)b);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
730 #endif
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
731 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
732 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
733
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
734 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
735 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
736 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
737 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
738 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
739
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
740 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
741
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
742 info_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
743 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
744
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
745 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
746 menu_invite_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
747 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
748 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
749 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
750
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
751 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
752
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
753 invite_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
754 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
755
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
756 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
757 menu_warn_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
758 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
759 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
760 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
761
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
762 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
763
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
764 warn_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
765 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
766
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
767 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
768 menu_block_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
769 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
770 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
771 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
772
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
773 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
774
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
775 block_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
776 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
777
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
778 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
779 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
780 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
781 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
782 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
783
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
784 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
785
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
786 add_cb(NULL, conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
787 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
788
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
789 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
790 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
791 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
792 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
793
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
794 close_conv_cb(NULL, gaim_window_get_active_conversation(win));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
795 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
796
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
797 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
798 menu_logging_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
799 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
800 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
801 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
802
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
803 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
804
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
805 if (conv == NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
806 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
807
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
808 gaim_conversation_set_logging(conv,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
809 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
810 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
811
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
812 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
813 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
814 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
815 GaimWindow *win = (GaimWindow *)data;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
816 GaimConversation *conv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
817 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
818
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
819 conv = gaim_window_get_active_conversation(win);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
820
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
821 if (!conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
822 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
823
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
824 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
825
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
826 gtkconv->make_sound =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
827 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
828 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
829
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
830
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
831
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
832 void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
833 im_cb(GtkWidget *widget, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
834 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
835 GaimConversation *conv2;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
836 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
837 GaimGtkChatPane *gtkchat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
838 GaimAccount *account;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
839 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
840 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
841 GtkTreeSelection *sel;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
842 const char *name;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
843
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
844 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
845 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
846
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
847 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
848 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
849
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
850 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
851 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
852 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
853 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
854
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
855 if (*name == '@') name++;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
856 if (*name == '%') name++;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
857 if (*name == '+') name++;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
858
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
859 account = gaim_conversation_get_account(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
860
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
861 conv2 = gaim_find_conversation(name);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
862
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
863 if (conv2 != NULL) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
864 gaim_window_raise(gaim_conversation_get_window(conv2));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
865 gaim_conversation_set_account(conv2, account);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
866 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
867 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
868 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, name);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
869 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
870
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
871 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
872 ignore_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
873 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
874 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
875 GaimGtkChatPane *gtkchat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
876 GaimChat *chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
877 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
878 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
879 GtkTreeSelection *sel;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
880 const char *name;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
881 int pos;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
882
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
883 chat = GAIM_CHAT(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
884 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
885 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
886
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
887 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
888 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
889
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
890 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
891 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
892 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
893 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
894 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
895 return;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
896
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
897 pos = g_list_index(gaim_chat_get_users(chat), name);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
898
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
899 if (gaim_chat_is_user_ignored(chat, name))
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
900 gaim_chat_unignore(chat, name);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
901 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
902 gaim_chat_ignore(chat, name);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
903
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
904 add_chat_buddy_common(conv, name, pos);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
905 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
906
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
907 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
908 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
909 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
910 const char *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
911 GaimConversation *conv2;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
912 GaimAccount *account;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
913
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
914 who = g_object_get_data(G_OBJECT(w), "user_data");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
915
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
916 account = gaim_conversation_get_account(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
917
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
918 conv2 = gaim_find_conversation(who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
919
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
920 if (conv2 != NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
921 gaim_window_show(gaim_conversation_get_window(conv2));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
922 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
923 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
924 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
925
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
926 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
927 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
928 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
929 GaimPluginProtocolInfo *prpl_info = NULL;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
930 GaimConnection *gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
931 char *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
932
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
933 gc = gaim_conversation_get_gc(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
934 who = g_object_get_data(G_OBJECT(w), "user_data");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
935
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
936 if (gc != NULL) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
937 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
938
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
939 /*
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
940 * If there are special needs for getting info on users in
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
941 * buddy chat "rooms"...
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
942 */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
943 if (prpl_info->get_cb_info != NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
944 prpl_info->get_cb_info(gc, gaim_chat_get_id(GAIM_CHAT(conv)), who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
945 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
946 prpl_info->get_info(gc, who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
947 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
948 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
949
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
950 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
951 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
952 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
953 GaimPluginProtocolInfo *prpl_info = NULL;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
954 GaimConnection *gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
955 char *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
956
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
957 gc = gaim_conversation_get_gc(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
958 who = g_object_get_data(G_OBJECT(w), "user_data");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
959
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
960 if (gc != NULL) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
961 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
962
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
963 /*
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
964 * May want to expand this to work similarly to menu_info_cb?
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
965 */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
966
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
967 if (prpl_info->get_cb_away != NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
968 prpl_info->get_cb_away(gc, gaim_chat_get_id(GAIM_CHAT(conv)), who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
969 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
970 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
971
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
972 static void
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
973 menu_chat_add_cb(GtkWidget *w, GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
974 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
975 GaimConnection *gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
976 struct buddy *b;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
977 char *name;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
978
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
979 gc = gaim_conversation_get_gc(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
980 name = g_object_get_data(G_OBJECT(w), "user_data");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
981 b = gaim_find_buddy(gc->account, name);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
982
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
983 if (b != NULL)
5975
80e5258226f3 [gaim-migrate @ 6422]
Mark Doliner <mark@kingant.net>
parents: 5966
diff changeset
984 show_confirm_del(b);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
985 else if (gc != NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
986 show_add_buddy(gc, name, NULL, NULL);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
987
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
988 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
989 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
990
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
991 static gint
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
992 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
993 GaimConversation *conv)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
994 {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
995 GaimPluginProtocolInfo *prpl_info = NULL;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
996 GaimGtkConversation *gtkconv;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
997 GaimGtkChatPane *gtkchat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
998 GaimConnection *gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
999 GaimAccount *account;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1000 GtkTreePath *path;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1001 GtkTreeIter iter;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1002 GtkTreeModel *model;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1003 GtkTreeViewColumn *column;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1004 gchar *who;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1005 int x, y;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1006
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1007 gtkconv = GAIM_GTK_CONVERSATION(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1008 gtkchat = gtkconv->u.chat;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1009 account = gaim_conversation_get_account(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1010 gc = account->gc;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1011
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1012 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1013
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1014 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(gtkchat->list),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1015 event->x, event->y, &path, &column, &x, &y);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1016
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1017 if (path == NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1018 return FALSE;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1019
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1020 if (gc != NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1021 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1022
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1023 gtk_tree_selection_select_path(GTK_TREE_SELECTION(
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1024 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1025
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1026 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1027 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1028
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1029 if (*who == '@') who++;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1030 if (*who == '%') who++;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1031 if (*who == '+') who++;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1032
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1033 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1034 GaimConversation *c;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1035
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1036 if ((c = gaim_find_conversation(who)) == NULL)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1037 c = gaim_conversation_new(GAIM_CONV_IM, account, who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1038 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1039 gaim_conversation_set_account(c, account);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1040 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1041 else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1042 static GtkWidget *menu = NULL;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1043 GtkWidget *button;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1044
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1045 /*
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1046 * If a menu already exists, destroy it before creating a new one,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1047 * thus freeing-up the memory it occupied.
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1048 */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1049
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1050 if (menu)
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1051 gtk_widget_destroy(menu);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1052
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1053 menu = gtk_menu_new();
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1054
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1055 button = gtk_menu_item_new_with_label(_("IM"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1056 g_signal_connect(G_OBJECT(button), "activate",
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1057 G_CALLBACK(menu_chat_im_cb), conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1058 g_object_set_data(G_OBJECT(button), "user_data", who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1059 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1060 gtk_widget_show(button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1061
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1062 if (gaim_chat_is_user_ignored(GAIM_CHAT(conv), who))
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1063 button = gtk_menu_item_new_with_label(_("Un-Ignore"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1064 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1065 button = gtk_menu_item_new_with_label(_("Ignore"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1066
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1067 g_signal_connect(G_OBJECT(button), "activate",
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1068 G_CALLBACK(ignore_cb), conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1069 g_object_set_data(G_OBJECT(button), "user_data", who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1070 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1071 gtk_widget_show(button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1072
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1073 if (gc && prpl_info->get_info) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1074 button = gtk_menu_item_new_with_label(_("Info"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1075 g_signal_connect(G_OBJECT(button), "activate",
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1076 G_CALLBACK(menu_chat_info_cb), conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1077 g_object_set_data(G_OBJECT(button), "user_data", who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1078 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1079 gtk_widget_show(button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1080 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1081
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1082 if (gc && prpl_info->get_cb_away) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1083 button = gtk_menu_item_new_with_label(_("Get Away Msg"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1084 g_signal_connect(G_OBJECT(button), "activate",
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1085 G_CALLBACK(menu_chat_get_away_cb), conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1086 g_object_set_data(G_OBJECT(button), "user_data", who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1087 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1088 gtk_widget_show(button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1089 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1090
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1091 /* Added by Jonas <jonas@birme.se> */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1092 if (gc) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1093 if (gaim_find_buddy(gc->account, who))
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1094 button = gtk_menu_item_new_with_label(_("Remove"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1095 else
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1096 button = gtk_menu_item_new_with_label(_("Add"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1097
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1098 g_signal_connect(G_OBJECT(button), "activate",
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1099 G_CALLBACK(menu_chat_add_cb), conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1100
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1101 g_object_set_data(G_OBJECT(button), "user_data", who);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1102 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1103 gtk_widget_show(button);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1104 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1105 /* End Jonas */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1106
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1107 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1108 event->button, event->time);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1109 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1110
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1111 return TRUE;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1112 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1113
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1114 static gboolean
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1115 entry_key_pressed_cb_2(GtkWidget *entry, GdkEventKey *event, gpointer data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1116 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1117 GaimWindow *win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1118 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1119 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1120 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1121
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1122 conv = (GaimConversation *)data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1123 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1124 win = gaim_conversation_get_window(conv);
4362
4f8a1b65ffa3 [gaim-migrate @ 4628]
Nathan Walp <nwalp@pidgin.im>
parents: 4361
diff changeset
1125 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1126
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1127 if (event->keyval == GDK_Escape) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1128 if (gaim_prefs_get_bool("/gaim/gtk/conversations/escape_closes")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1129 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1130 gaim_conversation_destroy(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1131 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1132 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1133 else if (event->keyval == GDK_Page_Up) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1134 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1135
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1136 if (!(event->state & GDK_CONTROL_MASK))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1137 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1138 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1139 else if (event->keyval == GDK_Page_Down) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1140 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1141
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1142 if (!(event->state & GDK_CONTROL_MASK))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1143 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1144 }
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1145 else if (event->keyval == GDK_F2 &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1146 gaim_prefs_get_bool("/gaim/gtk/conversations/f2_toggles_timestamps")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1147 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1148 !GTK_IMHTML(gtkconv->imhtml)->comments);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1149 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1150 else if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1151 if ((event->state & GDK_CONTROL_MASK) &&
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1152 gaim_prefs_get_bool("/gaim/gtk/conversations/ctrl_enter_sends")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1153
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1154 send_cb(NULL, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1155 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1156
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1157 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1158 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1159 else if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) &&
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1160 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1161
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1162 send_cb(NULL, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1163 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1164
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1165 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1166 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1167
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1168 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1169 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1170 else if ((event->state & GDK_CONTROL_MASK) && (event->keyval == 'm')) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1171 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1172 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, "\n", 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1173 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1174 else if (event->state & GDK_CONTROL_MASK) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1175 switch (event->keyval) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1176 case GDK_Up:
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1177 if (!conv->send_history)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1178 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1179
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1180 if (!conv->send_history->prev) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1181 GtkTextIter start, end;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1182
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1183 if (conv->send_history->data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1184 g_free(conv->send_history->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1185
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1186 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1187 &start);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1188 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1189
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1190 conv->send_history->data =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1191 gtk_text_buffer_get_text(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1192 &start, &end, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1193 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1194
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1195 if (conv->send_history->next &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1196 conv->send_history->next->data) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1197
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1198 conv->send_history = conv->send_history->next;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1199 gtk_text_buffer_set_text(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1200 conv->send_history->data, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1201 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1202
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1203 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1204
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1205 case GDK_Down:
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1206 if (!conv->send_history)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1207 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1208
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1209 if (conv->send_history->prev) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1210 conv->send_history = conv->send_history->prev;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1211
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1212 if (conv->send_history->data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1213 gtk_text_buffer_set_text(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1214 conv->send_history->data, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1215 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1216
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1217 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1218 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1219
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1220 if (gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1221 switch (event->keyval) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1222 case 'i':
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1223 case 'I':
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1224 set_toggle(gtkconv->toolbar.italic,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1225 !gtk_toggle_button_get_active(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1226 GTK_TOGGLE_BUTTON(gtkconv->toolbar.italic)));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1227
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1228 g_signal_stop_emission_by_name(G_OBJECT(entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1229 "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1230 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1231
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1232 case 'u': /* ctrl-u is GDK_Clear, which clears the line. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1233 case 'U':
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1234 set_toggle(gtkconv->toolbar.underline,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1235 !gtk_toggle_button_get_active(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1236 GTK_TOGGLE_BUTTON(gtkconv->toolbar.underline)));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1237
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1238 g_signal_stop_emission_by_name(G_OBJECT(entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1239 "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1240 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1241
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1242 case 'b': /* ctrl-b is GDK_Left, which moves backwards. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1243 case 'B':
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1244 set_toggle(gtkconv->toolbar.bold,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1245 !gtk_toggle_button_get_active(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1246 GTK_TOGGLE_BUTTON(gtkconv->toolbar.bold)));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1247
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1248 g_signal_stop_emission_by_name(G_OBJECT(entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1249 "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1250 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1251
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1252 case '-':
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1253 do_small(NULL, gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1254
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1255 g_signal_stop_emission_by_name(G_OBJECT(entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1256 "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1257 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1258
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1259 case '=':
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1260 case '+':
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1261 do_big(NULL, gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1262
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1263 g_signal_stop_emission_by_name(G_OBJECT(entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1264 "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1265 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1266
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1267 case '0':
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1268 set_toggle(gtkconv->toolbar.normal_size,
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1269 !gtk_toggle_button_get_active(
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1270 GTK_TOGGLE_BUTTON(gtkconv->toolbar.normal_size)));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1271
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1272 g_signal_stop_emission_by_name(G_OBJECT(entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1273 "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1274 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1275
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1276 case 'f':
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1277 case 'F':
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1278 set_toggle(gtkconv->toolbar.font,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1279 !gtk_toggle_button_get_active(
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1280 GTK_TOGGLE_BUTTON(gtkconv->toolbar.font)));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1281
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1282 g_signal_stop_emission_by_name(G_OBJECT(entry),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1283 "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1284 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1285 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1286 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1287
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1288 if (gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1289 char buf[7];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1290
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1291 *buf = '\0';
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1292
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1293 switch (event->keyval) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1294 case '1': strcpy(buf, ":-)"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1295 case '2': strcpy(buf, ":-("); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1296 case '3': strcpy(buf, ";-)"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1297 case '4': strcpy(buf, ":-P"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1298 case '5': strcpy(buf, "=-O"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1299 case '6': strcpy(buf, ":-*"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1300 case '7': strcpy(buf, ">:o"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1301 case '8': strcpy(buf, "8-)"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1302 case '!': strcpy(buf, ":-$"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1303 case '@': strcpy(buf, ":-!"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1304 case '#': strcpy(buf, ":-["); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1305 case '$': strcpy(buf, "O:-)"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1306 case '%': strcpy(buf, ":-/"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1307 case '^': strcpy(buf, ":'("); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1308 case '&': strcpy(buf, ":-X"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1309 case '*': strcpy(buf, ":-D"); break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1310 default: break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1311 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1312
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1313 if (*buf) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1314 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1315 buf, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1316 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1317 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1318 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1319
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1320 if (event->keyval == 'l') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1321 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1322 g_string_free(conv->history, TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1323 conv->history = g_string_new("");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1324 }
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1325 else if (event->keyval == 'w' &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1326 gaim_prefs_get_bool("/gaim/gtk/conversations/ctrl_w_closes")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1327
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1328 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1329 gaim_conversation_destroy(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1330 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1331 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1332 else if (event->keyval == 'n') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1333 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1334
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1335 show_im_dialog();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1336 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1337 else if (event->keyval == 'z') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1338 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5133
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
1339
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
1340 gtk_window_iconify(GTK_WINDOW(gtkwin->window));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1341 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1342 else if (event->keyval == '[') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1343 gaim_window_switch_conversation(win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1344 gaim_conversation_get_index(conv) - 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1345
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1346 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1347 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1348 else if (event->keyval == ']') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1349 gaim_window_switch_conversation(win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1350 gaim_conversation_get_index(conv) + 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1351
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1352 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1353 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1354 else if (event->keyval == GDK_Tab) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1355 move_next_tab(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1356
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1357 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1358
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1359 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1360 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1361 }
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1362 else if (event->keyval == GDK_Tab &&
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1363 gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1364 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/tab_completion")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1365
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1366 tab_complete(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1367
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1368 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1369
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1370 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1371 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1372 else if ((event->state & GDK_MOD1_MASK) &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1373 event->keyval > '0' && event->keyval <= '9') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1374
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1375 gaim_window_switch_conversation(win, event->keyval - '1');
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1376
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1377 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1378 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1379
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1380 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1381 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1382
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1383 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1384 * NOTE:
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1385 * This guy just kills a single right click from being propagated any
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1386 * further. I have no idea *why* we need this, but we do ... It
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1387 * prevents right clicks on the GtkTextView in a convo dialog from
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1388 * going all the way down to the notebook. I suspect a bug in
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1389 * GtkTextView, but I'm not ready to point any fingers yet.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1390 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1391 static gboolean
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1392 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1393 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1394 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1395 /* Right single click */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1396 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1397
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1398 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1399 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1400
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1401 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1402 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1403
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1404 static void
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
1405 menu_conv_sel_send_cb(GObject *m, gpointer data)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1406 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1407 GaimWindow *win = g_object_get_data(m, "user_data");
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
1408 GaimAccount *account = g_object_get_data(m, "gaim_account");
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1409 GaimConversation *conv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1410
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1411 conv = gaim_window_get_active_conversation(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1412
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
1413 gaim_conversation_set_account(conv, account);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1414 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1415
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1416 static void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1417 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1418 gchar *new_text, gint new_text_length, gpointer user_data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1419 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1420 GaimConversation *conv = (GaimConversation *)user_data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1421
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1422 g_return_if_fail(conv != NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1423
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1424 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1425 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1426
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1427 got_typing_keypress(conv, (gtk_text_iter_is_start(position) &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1428 gtk_text_iter_is_end(position)));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1429 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1430
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1431 static void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1432 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1433 GtkTextIter *end_pos, gpointer user_data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1434 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1435 GaimConversation *conv = (GaimConversation *)user_data;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1436 GaimIm *im;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1437
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1438 g_return_if_fail(conv != NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1439
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
1440 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1441 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1442
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1443 im = GAIM_IM(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1444
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1445 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1446
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1447 /* We deleted all the text, so turn off typing. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1448 if (gaim_im_get_type_again_timeout(im))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1449 gaim_im_stop_type_again_timeout(im);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1450
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1451 /* XXX The (char *) should go away! Somebody add consts to stuff! */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1452 serv_send_typing(gaim_conversation_get_gc(conv),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1453 (char *)gaim_conversation_get_name(conv),
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
1454 GAIM_NOT_TYPING);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1455 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1456 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1457 /* We're deleting, but not all of it, so it counts as typing. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1458 got_typing_keypress(conv, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1459 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1460 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1461
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1462 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1463 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1464 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1465 static GdkCursor *cursor = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1466
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1467 gtkwin->in_drag = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1468
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1469 if (gtkwin->drag_leave_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1470 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1471 gtkwin->drag_leave_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1472
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1473 gtkwin->drag_leave_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1474 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1475
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1476 if (cursor == NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1477 cursor = gdk_cursor_new(GDK_FLEUR);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1478
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1479 /* Grab the pointer */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1480 gtk_grab_add(gtkwin->notebook);
5114
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1481 #ifndef _WIN32
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1482 /* Currently for win32 GTK+ (as of 2.2.1), gdk_pointer_is_grabbed will
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1483 always be true after a button press. */
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1484 if (!gdk_pointer_is_grabbed())
5114
e245e686f62f [gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5106
diff changeset
1485 #endif
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1486 gdk_pointer_grab(gtkwin->notebook->window, FALSE,
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1487 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1488 NULL, cursor, GDK_CURRENT_TIME);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1489 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1490
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1491 static gboolean
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1492 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1493 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1494 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1495
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1496 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1497
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1498 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1499 * Make sure the user moved the mouse far enough for the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1500 * drag to be initiated.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1501 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1502 if (gtkwin->in_predrag) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1503 if (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1504 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1505 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1506 e->y_root >= gtkwin->drag_max_y) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1507
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1508 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1509 notebook_init_grab(gtkwin, widget);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1510 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1511 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1512 else { /* Otherwise, draw the arrows. */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1513 GaimWindow *dest_win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1514 GaimGtkWindow *dest_gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1515 GtkNotebook *dest_notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1516 GtkWidget *tab, *last_vis_tab = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1517 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1518 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1519 gboolean horiz_tabs = FALSE, tab_found = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1520 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1521
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1522 /* Get the window that the cursor is over. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1523 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1524
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1525 if (dest_win == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1526 dnd_hints_hide_all();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1527
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1528 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1529 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1530
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1531 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1532
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1533 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1534
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1535 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1536
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1537 arrow1_x = arrow2_x = nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1538 arrow1_y = arrow2_y = nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1539
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1540 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1541 e->x_root, e->y_root);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1542
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1543 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1544 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1545
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1546 horiz_tabs = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1547 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1548
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1549 /* Find out where to put the arrows. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1550 for (l = gaim_window_get_conversations(dest_win), i = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1551 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1552 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1553
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1554 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1555
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1556 tab = GAIM_GTK_CONVERSATION(conv)->tabby;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1557
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1558 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1559 * If this is the correct tab, record the positions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1560 * for the arrows.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1561 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1562 if (i == page_num) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1563 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1564 arrow1_x = arrow2_x = nb_x + tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1565 arrow1_y = nb_y + tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1566 arrow2_y = nb_y + tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1567 tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1568 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1569 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1570 arrow1_x = nb_x + tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1571 arrow2_x = nb_x + tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1572 tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1573 arrow1_y = arrow2_y = nb_y + tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1574 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1575
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1576 tab_found = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1577 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1578 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1579 else { /* Keep track of the right-most tab that we see. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1580 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1581 last_vis_tab = tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1582 last_vis_tab_loc = tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1583 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1584 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1585 last_vis_tab = tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1586 last_vis_tab_loc = tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1587 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1588 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1589 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1590
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1591 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1592 * If we didn't find the tab, then we'll just place the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1593 * arrows to the right/bottom of the last visible tab.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1594 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1595 if (!tab_found && last_vis_tab) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1596 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1597 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1598 last_vis_tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1599 arrow1_y = nb_y + last_vis_tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1600 arrow2_y = nb_y + last_vis_tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1601 last_vis_tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1602 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1603 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1604 arrow1_x = nb_x + last_vis_tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1605 arrow2_x = nb_x + last_vis_tab->allocation.x +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1606 last_vis_tab->allocation.width;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1607 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y +
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1608 last_vis_tab->allocation.height;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1609 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1610 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1611
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1612 if (horiz_tabs) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1613 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1614 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1615 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1616 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1617 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1618 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1619 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1620 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1621
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1622 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1623 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1624
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1625 static gboolean
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1626 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1627 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1628 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1629
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1630 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1631
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1632 if (gtkwin->in_drag)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1633 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1634
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1635 if (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1636 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1637 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1638 e->y_root >= gtkwin->drag_max_y) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1639
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1640 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1641 notebook_init_grab(gtkwin, widget);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1642 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1643
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1644 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1645 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1646
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1647 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1648 * THANK YOU GALEON!
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1649 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1650 static gboolean
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1651 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1652 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1653 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1654 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1655 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1656 int tab_clicked;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1657
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1658 if (e->button != 1 || e->type != GDK_BUTTON_PRESS)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1659 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1660
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1661 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1662
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1663 if (gtkwin->in_drag) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1664 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
1665 "Already in the middle of a window drag at tab_press_cb\n");
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1666 return TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1667 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1668
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1669 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1670 * Make sure a tab was actually clicked. The arrow buttons
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1671 * mess things up.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1672 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1673 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1674
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1675 if (tab_clicked == -1)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1676 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1677
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1678 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1679 * Get the relative position of the press event, with regards to
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1680 * the position of the notebook.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1681 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1682 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1683
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1684 x_rel = e->x_root - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1685 y_rel = e->y_root - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1686
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1687 /* Reset the min/max x/y */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1688 gtkwin->drag_min_x = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1689 gtkwin->drag_min_y = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1690 gtkwin->drag_max_x = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1691 gtkwin->drag_max_y = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1692
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1693 /* Find out which tab was dragged. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1694 for (l = gaim_window_get_conversations(win); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1695 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1696 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1697
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1698 if (!GTK_WIDGET_VISIBLE(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1699 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1700
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1701 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1702 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1703
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1704 /* Save the borders of the tab. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1705 gtkwin->drag_min_x = tab->allocation.x + nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1706 gtkwin->drag_min_y = tab->allocation.y + nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1707 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1708 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1709 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1710
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1711 /* Make sure the click occurred in the tab. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1712 if (e->x_root < gtkwin->drag_min_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1713 e->x_root >= gtkwin->drag_max_x ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1714 e->y_root < gtkwin->drag_min_y ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1715 e->y_root >= gtkwin->drag_max_y) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1716
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1717 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1718 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1719
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1720 gtkwin->in_predrag = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1721
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1722 /* Connect the new motion signals. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1723 gtkwin->drag_motion_signal =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1724 g_signal_connect(G_OBJECT(widget), "motion_notify_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1725 G_CALLBACK(notebook_motion_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1726
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1727 gtkwin->drag_leave_signal =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1728 g_signal_connect(G_OBJECT(widget), "leave_notify_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1729 G_CALLBACK(notebook_leave_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1730
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1731 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1732 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1733
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1734 static gboolean
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1735 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1736 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1737 GaimWindow *dest_win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1738 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1739 GaimGtkWindow *dest_gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1740 GaimConversation *conv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1741 GtkNotebook *dest_notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1742 gint dest_page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1743
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1744 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1745 * Don't check to make sure that the event's window matches the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1746 * widget's, because we may be getting an event passed on from the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1747 * close button.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1748 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1749 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1750 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1751
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1752 if (gdk_pointer_is_grabbed()) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1753 gdk_pointer_ungrab(GDK_CURRENT_TIME);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1754 gtk_grab_remove(widget);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1755 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1756
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1757 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1758
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1759 if (!gtkwin->in_predrag && !gtkwin->in_drag)
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1760 return FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1761
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1762 /* Disconnect the motion signal. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1763 if (gtkwin->drag_motion_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1764 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1765 gtkwin->drag_motion_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1766
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1767 gtkwin->drag_motion_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1768 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1769
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1770 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1771 * If we're in a pre-drag, we'll also need to disconnect the leave
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1772 * signal.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1773 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1774 if (gtkwin->in_predrag) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1775 gtkwin->in_predrag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1776
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1777 if (gtkwin->drag_leave_signal) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1778 g_signal_handler_disconnect(G_OBJECT(widget),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1779 gtkwin->drag_leave_signal);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1780
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1781 gtkwin->drag_leave_signal = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1782 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1783 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1785 /* If we're not in drag... */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 /* We're perfectly normal people! */
4803
6f04901ef729 [gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents: 4793
diff changeset
1787 if (!gtkwin->in_drag)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1788 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1789
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1790 gtkwin->in_drag = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1791
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1792 dnd_hints_hide_all();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1793
4369
7e1fb422e5fd [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1794 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1796 conv = gaim_window_get_active_conversation(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1797
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 if (dest_win == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1799 if (gaim_window_get_conversation_count(win) < 2)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1800 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1801
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1802 if (gaim_window_get_conversation_count(win) > 1) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1803 /* Make a new window to stick this to. */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1804 GaimWindow *new_win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1805 GaimGtkWindow *new_gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1806 GaimGtkConversation *gtkconv;
4748
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1807 gint win_width, win_height;
5121
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
1808
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
1809 gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1810
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1811 new_win = gaim_window_new();
5121
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
1812
5139
d0182ae31ab8 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5133
diff changeset
1813 gaim_window_add_conversation(new_win,
d0182ae31ab8 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5133
diff changeset
1814 gaim_window_remove_conversation(win,
d0182ae31ab8 [gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents: 5133
diff changeset
1815 gaim_conversation_get_index(conv)));
5121
34a9f0d3fc83 [gaim-migrate @ 5484]
Luke Schierer <lschiere@pidgin.im>
parents: 5116
diff changeset
1816
4748
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1817 new_gtkwin = GAIM_GTK_WINDOW(new_win);
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1818
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1819 gtk_window_get_size(GTK_WINDOW(new_gtkwin->window),
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1820 &win_width, &win_height);
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1821
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1822 gtk_window_move(GTK_WINDOW(new_gtkwin->window),
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1823 e->x_root - (win_width / 2),
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1824 e->y_root - (win_height / 2));
d3c09ddfd3aa [gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
1825
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1826 gaim_window_show(new_win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1827 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1828
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1829 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1830 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1831
4369
7e1fb422e5fd [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1832 dest_gtkwin = GAIM_GTK_WINDOW(dest_win);
7e1fb422e5fd [gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents: 4368
diff changeset
1833
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1834 /* Get the destination notebook. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1835 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1836
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1837 /* Get the destination page number. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1838 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1839 e->x_root, e->y_root);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1840
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1841 if (win == dest_win) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1842 gaim_window_move_conversation(win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1843 gaim_conversation_get_index(conv), dest_page_num);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1844 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1845 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1846 size_t pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1847
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1848 gaim_window_remove_conversation(win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1849 gaim_conversation_get_index(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1850
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1851 pos = gaim_window_add_conversation(dest_win, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1852
5901
74e273e22f94 [gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents: 5881
diff changeset
1853 if (pos != dest_page_num)
74e273e22f94 [gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents: 5881
diff changeset
1854 gaim_window_move_conversation(dest_win, pos, dest_page_num);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1855
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1856 gaim_window_switch_conversation(dest_win, dest_page_num);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1857 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1858
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1859 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1860
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1861 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1862 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1863
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1864 static void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1865 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1866 gpointer user_data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1867 {
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
1868 GaimPluginProtocolInfo *prpl_info = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1869 GaimWindow *win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1870 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1871 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1872 GaimGtkWindow *gtkwin;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
1873 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1874
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1875 win = (GaimWindow *)user_data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1876
4598
a064e437d5eb [gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents: 4596
diff changeset
1877 conv = gaim_window_get_conversation_at(win, page_num);
a064e437d5eb [gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents: 4596
diff changeset
1878
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
1879 g_return_if_fail(conv != NULL);
4598
a064e437d5eb [gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents: 4596
diff changeset
1880
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1881 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1882 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1883 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1884
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1885 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1886
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
1887 if (gc != NULL) {
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
1888 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
1889 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
1890 }
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
1891
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1892 /* Update the menubar */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1893 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1894 gtk_widget_show(gtkwin->menu.view_log);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1895
5929
b85e88d3fa5f [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
1896 if (gc && prpl_info->options & OPT_PROTO_IM_IMAGE) {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1897 gtk_widget_show(gtkwin->menu.insert_image);
5929
b85e88d3fa5f [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
1898 gtk_widget_set_sensitive(gtkconv->toolbar.image, TRUE);
b85e88d3fa5f [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
1899
b85e88d3fa5f [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
1900 }
b85e88d3fa5f [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
1901 else {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1902 gtk_widget_hide(gtkwin->menu.insert_image);
5929
b85e88d3fa5f [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
1903 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
b85e88d3fa5f [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
1904 }
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1905
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1906 gtk_widget_show(gtkwin->menu.add_pounce);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1907 gtk_widget_show(gtkwin->menu.get_info);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1908 gtk_widget_show(gtkwin->menu.warn);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1909 gtk_widget_show(gtkwin->menu.block);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1910
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1911 if (gaim_find_buddy(gaim_conversation_get_account(conv),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1912 gaim_conversation_get_name(conv)) == NULL) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1913
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1914 gtk_widget_show(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1915 gtk_widget_hide(gtkwin->menu.remove);
5911
865f235ffaf0 [gaim-migrate @ 6343]
Christian Hammond <chipx86@chipx86.com>
parents: 5908
diff changeset
1916 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1917 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1918 else {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1919 gtk_widget_show(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1920 gtk_widget_hide(gtkwin->menu.add);
5911
865f235ffaf0 [gaim-migrate @ 6343]
Christian Hammond <chipx86@chipx86.com>
parents: 5908
diff changeset
1921 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1922 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1923
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1924 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1925 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1926
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1927 gtk_widget_hide(gtkwin->menu.invite);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1928
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1929 if (gtkwin->menu.send_as != NULL)
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
1930 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1931 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932 else {
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1933 gtk_widget_show(gtkwin->menu.invite);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1934
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1935 gtk_widget_hide(gtkwin->menu.view_log);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1936 gtk_widget_hide(gtkwin->menu.insert_image);
5929
b85e88d3fa5f [gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents: 5911
diff changeset
1937 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1938
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1939 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1940
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1941 gtk_widget_hide(gtkwin->menu.add_pounce);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1942 gtk_widget_hide(gtkwin->menu.get_info);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1943 gtk_widget_hide(gtkwin->menu.warn);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1944 gtk_widget_hide(gtkwin->menu.block);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1945
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1946 if (gaim_find_chat(gaim_conversation_get_gc(conv),
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1947 gaim_chat_get_id(GAIM_CHAT(conv))) == NULL) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1948
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1949 gtk_widget_show(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1950 gtk_widget_hide(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1951 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1952 else {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1953 gtk_widget_show(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1954 gtk_widget_hide(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1955 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1956
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1957 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
1958 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1959
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1960 if (gtkwin->menu.send_as != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1961 gtk_widget_hide(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1962 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1963
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
1964 update_typing_icon(conv);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
1965
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1966 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1967 gaim_conversation_is_logging(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1968
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1969 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1970 gtkconv->make_sound);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1971
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1972 gtk_widget_grab_focus(gtkconv->entry);
4681
efa194b5caaf [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
1973
4965
6e7082cf0892 [gaim-migrate @ 5299]
Sean Egan <seanegan@gmail.com>
parents: 4963
diff changeset
1974 gtk_window_set_title(GTK_WINDOW(gtkwin->window),
5462
8355eeeb52a3 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
1975 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1976 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1977
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1978 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1979 * Utility functions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1980 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1981 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1982 do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1983 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1984 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bold)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1985 gaim_gtk_surround(gtkconv, "<B>", "</B>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1986 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1987 gaim_gtk_advance_past(gtkconv, "<B>", "</B>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1988
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1989 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1990 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1991
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1992 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
1993 do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1994 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1995 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(italic)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1996 gaim_gtk_surround(gtkconv, "<I>", "</I>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1997 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1998 gaim_gtk_advance_past(gtkconv, "<I>", "</I>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1999
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2000 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2001 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2002
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2003 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2004 do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2005 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2006 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(underline)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2007 gaim_gtk_surround(gtkconv, "<U>", "</U>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2008 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2009 gaim_gtk_advance_past(gtkconv, "<U>", "</U>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2010
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2011 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2012 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2013
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2014 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2015 do_small(GtkWidget *small, GaimGtkConversation *gtkconv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2016 {
5049
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2017 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(small)))
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2018 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"1\">", "</FONT>");
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2019 else
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2020 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"1\">", "</FONT>");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2021
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2022 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2023 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2024
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2025 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2026 do_normal(GtkWidget *normal, GaimGtkConversation *gtkconv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2027 {
5049
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2028 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(normal)))
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2029 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"3\">", "</FONT>");
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2030 else
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2031 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"3\">", "</FONT>");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2032
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2033 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2034 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2035
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2036 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2037 do_big(GtkWidget *large, GaimGtkConversation *gtkconv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2038 {
5049
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2039 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(large)))
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2040 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"5\">", "</FONT>");
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2041 else
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
2042 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"5\">", "</FONT>");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2043
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2044 gtk_widget_grab_focus(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2045 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2046
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2047 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2048 toggle_font(GtkWidget *font, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2049 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2050 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2051
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2052 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2053
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2054 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(font)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2055 show_font_dialog(conv, font);
5582
e2f2d8857f9f [gaim-migrate @ 5986]
Luke Schierer <lschiere@pidgin.im>
parents: 5563
diff changeset
2056 else if (gtkconv->dialogs.font != NULL)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2057 cancel_font(font, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2058 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2059 gaim_gtk_advance_past(gtkconv, "<FONT FACE>", "</FONT>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2060 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2061
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2062 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2063 toggle_fg_color(GtkWidget *color, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2064 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2065 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2066
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2067 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2068
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2069 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2070 show_fgcolor_dialog(conv, color);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2071 else if (gtkconv->dialogs.fg_color != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2072 cancel_fgcolor(color, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2073 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2074 gaim_gtk_advance_past(gtkconv, "<FONT COLOR>", "</FONT>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2075 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2076
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2077 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2078 toggle_bg_color(GtkWidget *color, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2079 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2080 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2081
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2082 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2083
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2084 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2085 show_bgcolor_dialog(conv, color);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2086 else if (gtkconv->dialogs.bg_color != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2087 cancel_bgcolor(color, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2088 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2089 gaim_gtk_advance_past(gtkconv, "<BODY BGCOLOR>", "</BODY>");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2090 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2091
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2092 static void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2093 check_everything(GtkTextBuffer *buffer)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2094 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2095 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2096 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2097
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2098 conv = (GaimConversation *)g_object_get_data(G_OBJECT(buffer),
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2099 "user_data");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2100
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2101 g_return_if_fail(conv != NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2102
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2103 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2104
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2105 /* CONV TODO */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2106 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2107
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2108 static void
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2109 set_toggle(GtkWidget *tb, gboolean active)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2110 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2111 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tb), active);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2112 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2113
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2114 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2115 got_typing_keypress(GaimConversation *conv, gboolean first)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2116 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2117 GaimIm *im;
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2118
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2119 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2120 * We know we got something, so we at least have to make sure we don't
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2121 * send GAIM_TYPED any time soon.
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2122 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2123
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2124 im = GAIM_IM(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2125
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2126 if (gaim_im_get_type_again_timeout(im))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2127 gaim_im_stop_type_again_timeout(im);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2128
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2129 gaim_im_start_type_again_timeout(im);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2130
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2131 if (first || (gaim_im_get_type_again(im) != 0 &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2132 time(NULL) > gaim_im_get_type_again(im))) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2133
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2134 int timeout = serv_send_typing(gaim_conversation_get_gc(conv),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2135 (char *)gaim_conversation_get_name(conv),
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2136 GAIM_TYPING);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2137
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2138 if (timeout)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2139 gaim_im_set_type_again(im, time(NULL) + timeout);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2140 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2141 gaim_im_set_type_again(im, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2142 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2143 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2144
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2145 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2146 update_typing_icon(GaimConversation *conv)
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2147 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2148 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2149 GaimIm *im = NULL;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2150 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2151
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2152 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2153
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2154 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM)
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2155 im = GAIM_IM(conv);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2156
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2157 if(gtkwin->menu.typing_icon) {
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2158 gtk_widget_destroy(gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2159 gtkwin->menu.typing_icon = NULL;
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2160 }
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2161 if(im && gaim_im_get_typing_state(im) == GAIM_TYPING) {
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2162 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2163 gtk_image_menu_item_set_image(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2164 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2165 gtk_image_new_from_stock(GAIM_STOCK_TYPING,
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2166 GTK_ICON_SIZE_MENU));
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2167 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2168 _("User is typing..."), NULL);
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
2169 } else if(im && gaim_im_get_typing_state(im) == GAIM_TYPED) {
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2170 gtkwin->menu.typing_icon = gtk_image_menu_item_new();
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2171 gtk_image_menu_item_set_image(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2172 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2173 gtk_image_new_from_stock(GAIM_STOCK_TYPED,
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2174 GTK_ICON_SIZE_MENU));
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
2175 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon,
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2176 _("User has typed something and paused"), NULL);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2177 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2178
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2179 if(gtkwin->menu.typing_icon) {
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2180 gtk_menu_item_set_right_justified(
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2181 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2182 gtk_widget_show_all(gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2183 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar),
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2184 gtkwin->menu.typing_icon);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2185 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2186 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
2187
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2188 static gboolean
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2189 update_send_as_selection(GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2190 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2191 GaimAccount *account;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2192 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2193 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2194 GtkWidget *menu;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2195 GList *child;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2196
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2197 g_return_val_if_fail(g_list_find(gaim_get_windows(), win) != NULL, FALSE);
4849
adf9ca39578f [gaim-migrate @ 5174]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
2198
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2199 conv = gaim_window_get_active_conversation(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2200
5860
52d5fad43950 [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2201 if (conv == NULL)
52d5fad43950 [gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
2202 return FALSE;
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2203
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2204 account = gaim_conversation_get_account(conv);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2205 gtkwin = GAIM_GTK_WINDOW(win);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2206
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2207 g_return_val_if_fail(account != NULL, FALSE);
4466
473de7371a97 [gaim-migrate @ 4741]
Christian Hammond <chipx86@chipx86.com>
parents: 4465
diff changeset
2208
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2209 if (gtkwin->menu.send_as == NULL)
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2210 return FALSE;
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
2211
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2212 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2213
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2214 menu = gtk_menu_item_get_submenu(
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2215 GTK_MENU_ITEM(gtkwin->menu.send_as));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2216
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2217 for (child = gtk_container_get_children(GTK_CONTAINER(menu));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2218 child != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2219 child = child->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2220
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2221 GtkWidget *item = child->data;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2222 GaimAccount *item_account = g_object_get_data(G_OBJECT(item),
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2223 "gaim_account");
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2224
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2225 if (account == item_account) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2226 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2227 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2228 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2229 }
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
2230 return FALSE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2231 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2232
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2233 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2234 generate_send_as_items(GaimWindow *win, GaimConversation *deleted_conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2235 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2236 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2237 GtkWidget *menu;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2238 GtkWidget *menuitem;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2239 GList *gcs;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2240 GList *convs;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2241 GSList *group = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2242 gboolean first_offline = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2243 gboolean found_online = FALSE;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2244 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2245
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2246 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2247
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2248 if (gtkwin->menu.send_as != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2249 gtk_widget_destroy(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2250
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2251 /* See if we have > 1 connection active. */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2252 if (g_list_length(gaim_connections_get_all()) < 2) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2253 /* Now make sure we don't have any Offline entries. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2254 gboolean found_offline = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2255
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2256 for (convs = gaim_get_conversations();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2257 convs != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2258 convs = convs->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2259
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2260 GaimConversation *conv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2261 GaimAccount *account;
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2262
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2263 conv = (GaimConversation *)convs->data;
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2264 account = gaim_conversation_get_account(conv);
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2265
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2266 if (account->gc == NULL) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2267 found_offline = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2268 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2269 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2270 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2271
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2272 if (!found_offline) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2273 gtkwin->menu.send_as = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2274 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2275 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2276 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2277
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2278 /* Build the Send As menu */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2279 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2280 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2281
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2282 menu = gtk_menu_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2283
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2284 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2285 gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2286 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2287
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2288 gtk_widget_show(menu);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2289
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2290 /* Fill it with entries. */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2291 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) {
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2292
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2293 GaimConnection *gc;
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2294 GaimAccount *account;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2295 GtkWidget *box;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2296 GtkWidget *label;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2297 GtkWidget *image;
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2298 GdkPixbuf *pixbuf, *scale;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2299
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2300 found_online = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2301
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2302 gc = (GaimConnection *)gcs->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2303
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2304 /* Create a pixmap for the protocol icon. */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2305 pixbuf = create_prpl_icon(gc->account);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2306 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2307
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2308 /* Now convert it to GtkImage */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2309 if (pixbuf == NULL)
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2310 image = gtk_image_new();
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2311 else
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2312 image = gtk_image_new_from_pixbuf(scale);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2313
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2314 gtk_size_group_add_widget(sg, image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2315
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2316 g_object_unref(G_OBJECT(scale));
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2317 g_object_unref(G_OBJECT(pixbuf));
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2318
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2319 account = gaim_connection_get_account(gc);
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2320
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2321 /* Make our menu item */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2322 menuitem = gtk_radio_menu_item_new_with_label(group,
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2323 gaim_account_get_username(account));
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2324 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2325
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2326 /* Do some evil, see some evil, speak some evil. */
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2327 box = gtk_hbox_new(FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2328
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2329 label = gtk_bin_get_child(GTK_BIN(menuitem));
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2330 g_object_ref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2331 gtk_container_remove(GTK_CONTAINER(menuitem), label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2332
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2333 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2334 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2335
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2336 g_object_unref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2337
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2338 gtk_container_add(GTK_CONTAINER(menuitem), box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2339
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2340 gtk_widget_show(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2341 gtk_widget_show(image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2342 gtk_widget_show(box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2343
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2344 /* Set our data and callbacks. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2345 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2346 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2347
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2348 g_signal_connect(G_OBJECT(menuitem), "activate",
4673
049ea04f99d9 [gaim-migrate @ 4984]
Nathan Walp <nwalp@pidgin.im>
parents: 4671
diff changeset
2349 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2350
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2351 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2352 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2353 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2354
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2355 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2356 * Fill it with any accounts that still has an open (yet disabled) window
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2357 * (signed off accounts with a window open).
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2358 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2359 for (convs = gaim_get_conversations();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2360 convs != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2361 convs = convs->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2362
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2363 GaimConversation *conv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2364 GaimAccount *account;
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2365 GtkWidget *box;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2366 GtkWidget *label;
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2367 GtkWidget *image;
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2368 GdkPixbuf *pixbuf, *scale;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2369
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2370 conv = (GaimConversation *)convs->data;
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2371
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2372 if (conv == deleted_conv)
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2373 continue;
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2374
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2375 account = gaim_conversation_get_account(conv);
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2376
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2377
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5367
diff changeset
2378 if (account && (account->gc == NULL)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2379 if (first_offline && found_online) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2380 menuitem = gtk_separator_menu_item_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2381 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2382 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2383
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2384 first_offline = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2385 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2386
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2387 /* Create a pixmap for the protocol icon. */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2388 pixbuf = create_prpl_icon(account);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2389 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2390 GDK_INTERP_BILINEAR);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2391
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2392 /* Now convert it to GtkImage */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2393 if (pixbuf == NULL)
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2394 image = gtk_image_new();
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2395 else
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2396 image = gtk_image_new_from_pixbuf(scale);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2397
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2398 gtk_size_group_add_widget(sg, image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2399
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2400 if (scale != NULL) g_object_unref(scale);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2401 if (pixbuf != NULL) g_object_unref(pixbuf);
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2402
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2403 /* Make our menu item */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2404 menuitem = gtk_radio_menu_item_new_with_label(group,
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
2405 account->username);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2406 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2407
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2408 /* Do some evil, see some evil, speak some evil. */
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2409 box = gtk_hbox_new(FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2410
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2411 label = gtk_bin_get_child(GTK_BIN(menuitem));
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2412 g_object_ref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2413 gtk_container_remove(GTK_CONTAINER(menuitem), label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2414
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2415 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2416 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2417
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2418 g_object_unref(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2419
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2420 gtk_container_add(GTK_CONTAINER(menuitem), box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2421
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2422 gtk_widget_show(label);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2423 gtk_widget_show(image);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2424 gtk_widget_show(box);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2425
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2426 gtk_widget_set_sensitive(menuitem, FALSE);
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2427 g_object_set_data(G_OBJECT(menuitem), "user_data", win);
4674
7ffe2b64de2d [gaim-migrate @ 4985]
Nathan Walp <nwalp@pidgin.im>
parents: 4673
diff changeset
2428 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2429
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2430 g_signal_connect(G_OBJECT(menuitem), "activate",
5902
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
2431 G_CALLBACK(menu_conv_sel_send_cb), NULL);
4786
01e349782075 [gaim-migrate @ 5106]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2432
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2433 gtk_widget_show(menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2434 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2435 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2436 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2437
4669
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2438 g_object_unref(sg);
d715736164ae [gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents: 4668
diff changeset
2439
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2440 gtk_widget_show(gtkwin->menu.send_as);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2441 update_send_as_selection(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2442 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2443
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2444 static GList *
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2445 generate_invite_user_names(GaimConnection *gc)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2446 {
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2447 GaimBlistNode *gnode,*bnode;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2448 struct group *g;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2449 struct buddy *buddy;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2450 static GList *tmp = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2451
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2452 if (tmp)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2453 g_list_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2454
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2455 tmp = g_list_append(NULL, "");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2456
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2457 if (gc != NULL) {
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2458 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2459 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2460 continue;
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2461 g = (struct group *)gnode;
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2462 for(bnode = gnode->child; bnode; bnode = bnode->next) {
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2463 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2464 continue;
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2465 buddy = (struct buddy *)bnode;
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4781
diff changeset
2466
5068
b37d7d09ec83 [gaim-migrate @ 5419]
Nathan Walp <nwalp@pidgin.im>
parents: 5049
diff changeset
2467 if (buddy->account == gc->account && GAIM_BUDDY_IS_ONLINE(buddy))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2468 tmp = g_list_append(tmp, buddy->name);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2469 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2470 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2471 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2472
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2473 return tmp;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2474 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2475
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2476 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2477 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2478 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2479 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2480 GaimGtkChatPane *gtkchat;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2481 GaimChat *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2482 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2483 GtkListStore *ls;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2484
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2485 chat = GAIM_CHAT(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2486 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2487 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2488
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2489 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2490
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2491 gtk_list_store_append(ls, &iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2492 gtk_list_store_set(ls, &iter, 0,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2493 (gaim_chat_is_user_ignored(chat, name) ? "X" : " "),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2494 1, name, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2495 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2496 GTK_SORT_ASCENDING);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2497 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2498
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2499 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2500 tab_complete(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2501 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2502 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2503 GaimChat *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2504 GtkTextIter cursor, word_start, start_buffer;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2505 int start;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2506 int most_matched = -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2507 char *entered, *partial = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2508 char *text;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2509 GList *matches = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2510 GList *nicks = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2511
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2512 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2513 chat = GAIM_CHAT(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2514
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2515 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2516 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2517 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2518
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2519 word_start = cursor;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2520
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2521 /* if there's nothing there just return */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2522 if (!gtk_text_iter_compare(&cursor, &start_buffer))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2523 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2524
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2525 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2526 &cursor, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2527
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2528 /* if we're at the end of ": " we need to move back 2 spaces */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2529 start = strlen(text) - 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2530
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2531 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2532 gtk_text_iter_backward_chars(&word_start, 2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2533
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2534 /* find the start of the word that we're tabbing */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2535 while (start >= 0 && text[start] != ' ') {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2536 gtk_text_iter_backward_char(&word_start);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2537 start--;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2538 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2539
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2540 g_free(text);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2541
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2542 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2543 &cursor, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2544
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
2545 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2546 if (strlen(entered) >= 2 &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2547 !strncmp(": ", entered + strlen(entered) - 2, 2)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2548
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2549 entered[strlen(entered) - 2] = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2550 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2551 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2552
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2553 if (!strlen(entered)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2554 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2555 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2556 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2557
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2558 for (nicks = gaim_chat_get_users(chat);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2559 nicks != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2560 nicks = nicks->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2561
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2562 char *nick = nicks->data;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2563 /* this checks to see if the current nick could be a completion */
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2564 if (g_ascii_strncasecmp(nick, entered, strlen(entered))) {
4621
69f028a6f357 [gaim-migrate @ 4912]
Christian Hammond <chipx86@chipx86.com>
parents: 4608
diff changeset
2565 if (*nick != '+' && *nick != '@' && *nick != '%')
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2566 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2567
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2568 if (g_ascii_strncasecmp(nick + 1, entered, strlen(entered))) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2569 if (nick[0] != '@' || nick[1] != '+')
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2570 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2571
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2572 if (g_ascii_strncasecmp(nick + 2, entered, strlen(entered)))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2573 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2574 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2575 nick += 2;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2576 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2577 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2578 nick++;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2579 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2580
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2581 /* if we're here, it's a possible completion */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2582
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2583 /* if we're doing old-style, just fill in the completion */
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
2584 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2585 gtk_text_buffer_delete(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2586 &word_start, &cursor);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2587
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2588 if (strlen(nick) == strlen(entered)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2589 nicks = (nicks->next
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2590 ? nicks->next
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2591 : gaim_chat_get_users(chat));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2592
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2593 nick = nicks->data;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2594
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2595 if (*nick == '@') nick++;
4621
69f028a6f357 [gaim-migrate @ 4912]
Christian Hammond <chipx86@chipx86.com>
parents: 4608
diff changeset
2596 if (*nick == '%') nick++;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2597 if (*nick == '+') nick++;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2598 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2599
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2600 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2601 &start_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2602 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2603 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2604
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2605 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2606 char *tmp = g_strdup_printf("%s: ", nick);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2607 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2608 tmp, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2609 g_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2610 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2611 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2612 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2613 nick, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2614
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2615 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2616
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2617 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2618 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2619
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2620 /* we're only here if we're doing new style */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2621 if (most_matched == -1) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2622 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2623 * this will only get called once, since from now
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2624 * on most_matched is >= 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2625 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2626 most_matched = strlen(nick);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2627 partial = g_strdup(nick);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2628 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2629 else if (most_matched) {
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2630 while (g_ascii_strncasecmp(nick, partial, most_matched))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2631 most_matched--;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2632
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2633 partial[most_matched] = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2634 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2635
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2636 matches = g_list_append(matches, nick);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2637 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2638
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2639 /* we're only here if we're doing new style */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2640
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2641 /* if there weren't any matches, return */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2642 if (!matches) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2643 /* if matches isn't set partials won't be either */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2644 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2645 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2646 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2647
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2648 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2649
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2650 if (!matches->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2651 /* there was only one match. fill it in. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2652 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2653 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2654 gtk_text_buffer_get_insert(gtkconv->entry_buffer));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2655
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2656 if (!gtk_text_iter_compare(&cursor, &start_buffer)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2657 char *tmp = g_strdup_printf("%s: ", (char *)matches->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2658 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2659 g_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2660 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2661 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2662 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2663 matches->data, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2664
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2665 matches = g_list_remove(matches, matches->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2666 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2667 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2668 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2669 * there were lots of matches, fill in as much as possible
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2670 * and display all of them
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2671 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2672 char *addthis = g_malloc0(1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2673
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2674 while (matches) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2675 char *tmp = addthis;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2676 addthis = g_strconcat(tmp, matches->data, " ", NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2677 g_free(tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2678 matches = g_list_remove(matches, matches->data);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2679 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2680
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2681 gaim_conversation_write(conv, NULL, addthis, -1, WFLAG_NOLOG,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2682 time(NULL));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2683 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2684 g_free(addthis);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2685 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2686
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2687 g_free(entered);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2688 g_free(partial);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2689 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2690
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2691 static gboolean
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2692 meify(char *message, size_t len)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2693 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2694 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2695 * Read /me-ify: If the message (post-HTML) starts with /me,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2696 * remove the "/me " part of it (including that space) and return TRUE.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2697 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2698 char *c;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2699 gboolean inside_html = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2700
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2701 /* Umm.. this would be very bad if this happens. */
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
2702 g_return_val_if_fail(message != NULL, FALSE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2703
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2704 if (len == -1)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2705 len = strlen(message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2706
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2707 for (c = message; *c != '\0'; c++, len--) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2708 if (inside_html) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2709 if (*c == '>')
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2710 inside_html = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2711 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2712 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2713 if (*c == '<')
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2714 inside_html = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2715 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2716 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2717 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2718 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2719
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
2720 if (*c != '\0' && !g_ascii_strncasecmp(c, "/me ", 4)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2721 memmove(c, c + 4, len - 3);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2722
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2723 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2724 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2725
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2726 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2727 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2728
5934
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2729 static void
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2730 save_convo(GtkWidget *save, GaimConversation *c)
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2731 {
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2732 char buf[BUF_LONG];
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2733 GtkWidget *window;
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2734
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2735 window = gtk_file_selection_new(_("Gaim - Save Conversation"));
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2736
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2737 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log",
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2738 gaim_home_dir(), normalize(c->name));
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2739 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2740 g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2741 "gaim_conversation", c);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2742 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2743 "clicked", G_CALLBACK(do_save_convo), window);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2744 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2745 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2746 gtk_widget_show(window);
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2747 }
91ee71a394be [gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents: 5929
diff changeset
2748
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2749 static GtkItemFactoryEntry menu_items[] =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2750 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2751 /* Conversation menu */
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
2752 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2753
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
2754 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2755 "<StockItem>", GTK_STOCK_SAVE_AS },
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5165
diff changeset
2756 { N_("/Conversation/View _Log..."), NULL, menu_view_log_cb, 0, NULL },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2757
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2758 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2759
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
2760 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
2761 0, NULL },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2762 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2763 "<StockItem>", GAIM_STOCK_EDIT },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2764 { N_("/Conversation/_Get Info..."), NULL, menu_get_info_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2765 "<StockItem>", GAIM_STOCK_INFO },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2766 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2767 "<StockItem>", GAIM_STOCK_INVITE },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2768
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
2769 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2770
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
2771 { N_("/Conversation/Insert _URL..."), NULL, menu_insert_link_cb, 0,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2772 "<StockItem>", GAIM_STOCK_LINK },
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
2773 { N_("/Conversation/Insert _Image..."), NULL, menu_insert_image_cb, 0,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2774 "<StockItem>", GAIM_STOCK_IMAGE },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2775
5907
18486c860a46 [gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents: 5902
diff changeset
2776 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2777
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2778 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2779 "<StockItem>", GAIM_STOCK_WARN },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2780 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2781 "<StockItem>", GAIM_STOCK_BLOCK },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2782 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2783 "<StockItem>", GTK_STOCK_ADD },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2784 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2785 "<StockItem>", GTK_STOCK_REMOVE },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2786
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2787 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" },
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2788
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
2789 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2790 "<StockItem>", GTK_STOCK_CLOSE },
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2791
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2792 /* Options */
4596
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
2793 { N_("/_Options"), NULL, NULL, 0, "<Branch>" },
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
2794 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" },
7e1591c6d0d8 [gaim-migrate @ 4881]
Luke Schierer <lschiere@pidgin.im>
parents: 4578
diff changeset
2795 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" },
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2796 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2797
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2798 static const int menu_item_count =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2799 sizeof(menu_items) / sizeof(*menu_items);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2800
4602
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2801 static char *
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2802 item_factory_translate_func (const char *path, gpointer func_data)
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2803 {
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2804 return _(path);
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2805 }
4128761bacb8 [gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents: 4598
diff changeset
2806
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2807 static GtkWidget *
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2808 setup_menubar(GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2809 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2810 GaimGtkWindow *gtkwin;
5116
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
2811 GtkAccelGroup *accel_group;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2812 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2813
5116
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
2814 accel_group = gtk_accel_group_new ();
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
2815 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group);
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
2816 g_object_unref (accel_group);
c081a81ee013 [gaim-migrate @ 5479]
Luke Schierer <lschiere@pidgin.im>
parents: 5114
diff changeset
2817
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2818 gtkwin->menu.item_factory =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2819 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2820
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2821 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2822 item_factory_translate_func,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2823 NULL, NULL);
4630
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
2824
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
2825 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2826 menu_items, win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2827
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2828
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2829 gtkwin->menu.menubar =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2830 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>");
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2831
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2832
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2833 gtkwin->menu.view_log =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2834 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2835 N_("/Conversation/View Log..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2836 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2837
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2838 gtkwin->menu.add_pounce =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2839 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2840 N_("/Conversation/Add Buddy Pounce..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2841
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2842 gtkwin->menu.alias =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2843 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2844 N_("/Conversation/Alias..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2845
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2846 gtkwin->menu.get_info =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2847 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2848 N_("/Conversation/Get Info..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2849
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2850 gtkwin->menu.invite =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2851 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2852 N_("/Conversation/Invite..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2853
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2854 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2855
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2856 gtkwin->menu.insert_link =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2857 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2858 N_("/Conversation/Insert URL..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2859
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2860 gtkwin->menu.insert_image =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2861 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2862 N_("/Conversation/Insert Image..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2863
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2864 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2865
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2866 gtkwin->menu.warn =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2867 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2868 N_("/Conversation/Warn..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2869
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2870 gtkwin->menu.block =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2871 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2872 N_("/Conversation/Block..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2873
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2874 gtkwin->menu.add =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2875 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2876 N_("/Conversation/Add..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2877
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2878 gtkwin->menu.remove =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2879 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2880 N_("/Conversation/Remove..."));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2881
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2882 /* --- */
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2883
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2884 gtkwin->menu.logging =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2885 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2886 N_("/Options/Enable Logging"));
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2887 gtkwin->menu.sounds =
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2888 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
2889 N_("/Options/Enable Sounds"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2890
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
2891 generate_send_as_items(win, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2892
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2893 gtk_widget_show(gtkwin->menu.menubar);
4931
d80bc307e2c8 [gaim-migrate @ 5265]
Sean Egan <seanegan@gmail.com>
parents: 4896
diff changeset
2894
d80bc307e2c8 [gaim-migrate @ 5265]
Sean Egan <seanegan@gmail.com>
parents: 4896
diff changeset
2895 return gtkwin->menu.menubar;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2896 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2897
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2898 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2899 setup_im_buttons(GaimConversation *conv, GtkWidget *parent)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2900 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
2901 GaimConnection *gc;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2902 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2903 GaimGtkImPane *gtkim;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2904 GaimConversationType type = GAIM_CONV_IM;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2905
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2906 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2907 gtkim = gtkconv->u.im;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2908 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2909
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2910 /* From right to left... */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2911
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2912 /* Send button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2913 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2914 GAIM_STOCK_SEND, type);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2915 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2916
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2917 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2918
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2919 /* Separator */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2920 if (gtkim->sep2 != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2921 gtk_widget_destroy(gtkim->sep2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2922
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2923 gtkim->sep2 = gtk_vseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2924 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2925 gtk_widget_show(gtkim->sep2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2926
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2927 /* Now, um, just kind of all over the place. Huh? */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2928
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2929 /* Add button */
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2930 if (gaim_find_buddy(gaim_conversation_get_account(conv),
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2931 gaim_conversation_get_name(conv)) == NULL) {
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
2932
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2933 gtkim->add = gaim_gtk_change_text(_("Add"), gtkim->add,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2934 GTK_STOCK_ADD, type);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2935 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->add,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
2936 _("Add the user to your buddy list"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2937 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2938 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2939 gtkim->add = gaim_gtk_change_text(_("Remove"), gtkim->add,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2940 GTK_STOCK_REMOVE, type);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2941 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->add,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
2942 _("Remove the user from your buddy list"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2943 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2944
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2945 gtk_box_pack_start(GTK_BOX(parent), gtkim->add,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2946 FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2947
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2948 /* Warn button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2949 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2950 GAIM_STOCK_WARN, type);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2951 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0);
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
2952 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn,
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
2953 _("Warn the user"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2954
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2955 /* Info button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2956 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2957 GAIM_STOCK_INFO, type);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2958 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2959 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
2960 _("Get the user's information"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2961
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2962 /* Block button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2963 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2964 GAIM_STOCK_BLOCK, type);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2965 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2966 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
2967 _("Block the user"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2968
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2969 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2970 gtk_button_set_relief(GTK_BUTTON(gtkim->add), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2971 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2972 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2973 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2974
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2975 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2976 gtk_size_group_add_widget(gtkconv->sg, gtkim->add);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2977 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2978 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2979 gtk_size_group_add_widget(gtkconv->sg, gtkim->block);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2980
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2981 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2982 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2);
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
2983 gtk_box_reorder_child(GTK_BOX(parent), gtkim->add, 3);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2984 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 4);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2985
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2986 gaim_gtkconv_update_buttons_by_protocol(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2987
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2988 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2989 G_CALLBACK(send_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2990 g_signal_connect(G_OBJECT(gtkconv->info), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2991 G_CALLBACK(info_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2992 g_signal_connect(G_OBJECT(gtkim->warn), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2993 G_CALLBACK(warn_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2994 g_signal_connect(G_OBJECT(gtkim->block), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2995 G_CALLBACK(block_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2996 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2997
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2998 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
2999 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3000 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3001 GaimConnection *gc;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3002 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3003 GaimGtkChatPane *gtkchat;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3004 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3005 GtkWidget *sep;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3006
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3007 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3008 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3009 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3010 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3011
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3012 /* Send button */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3013 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3014 GAIM_STOCK_SEND, GAIM_CONV_CHAT);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3015 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3016
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3017 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3018
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3019 /* Separator */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3020 sep = gtk_vseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3021 gtk_box_pack_end(GTK_BOX(parent), sep, FALSE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3022 gtk_widget_show(sep);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3023
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3024 /* Invite */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3025 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3026 GAIM_STOCK_INVITE, GAIM_CONV_CHAT);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3027 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3028 _("Invite a user"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3029 gtk_box_pack_end(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3030
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3031 /* Set the relief on these. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3032 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3033 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3034
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3035 /* Callbacks */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3036 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3037 G_CALLBACK(send_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3038 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3039 G_CALLBACK(invite_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3040 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3041
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3042 static GtkWidget *
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3043 build_conv_toolbar(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3044 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3045 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3046 GtkWidget *vbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3047 GtkWidget *hbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3048 GtkWidget *button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3049 GtkWidget *sep;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3050 GtkSizeGroup *sg;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3051
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3052 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3053
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3054 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3055
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3056 vbox = gtk_vbox_new(FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3057 sep = gtk_hseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3058 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3059
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3060 hbox = gtk_hbox_new(FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3061 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3062
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3063 /* Bold */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3064 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3065 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3066 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3067 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Bold"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3068
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3069 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3070 G_CALLBACK(do_bold), gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3071
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3072 gtkconv->toolbar.bold = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3073
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3074 /* Italic */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3075 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3076 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3077 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3078 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Italic"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3079
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3080 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3081 G_CALLBACK(do_italic), gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3082
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3083 gtkconv->toolbar.italic = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3084
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3085 /* Underline */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3086 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3087 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3088 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3089 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Underline"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3090
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3091 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3092 G_CALLBACK(do_underline), gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3093
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3094 gtkconv->toolbar.underline = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3095
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3096 /* Sep */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3097 sep = gtk_vseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3098 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3099
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3100 /* Increase font size */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3101 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_BIGGER);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3102 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3103 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3104 gtk_tooltips_set_tip(gtkconv->tooltips, button,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3105 _("Larger font size"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3106
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3107 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3108 G_CALLBACK(do_big), gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3109
5049
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
3110 gtkconv->toolbar.larger_size = button;
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
3111
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3112 /* Normal font size */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3113 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_NORMAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3114 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3115 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3116 gtk_tooltips_set_tip(gtkconv->tooltips, button,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3117 _("Normal font size"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3118
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3119 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3120 G_CALLBACK(do_normal), gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3121
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3122 gtkconv->toolbar.normal_size = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3123
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3124 /* Decrease font size */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3125 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_SMALLER);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3126 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3127 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3128 gtk_tooltips_set_tip(gtkconv->tooltips, button,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3129 _("Smaller font size"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3130
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3131 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3132 G_CALLBACK(do_small), gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3133
5049
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
3134 gtkconv->toolbar.smaller_size = button;
24d0da9c56f2 [gaim-migrate @ 5397]
Luke Schierer <lschiere@pidgin.im>
parents: 5046
diff changeset
3135
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3136 /* Sep */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3137 sep = gtk_vseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3138 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3139
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3140 /* Font Face */
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3141
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3142 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_SELECT_FONT);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3143 gtk_size_group_add_widget(sg, button);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3144 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3145 gtk_tooltips_set_tip(gtkconv->tooltips, button,
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3146 _("Font Face"), NULL);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3147
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3148 g_signal_connect(G_OBJECT(button), "clicked",
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3149 G_CALLBACK(toggle_font), conv);
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3150
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3151 gtkconv->toolbar.font = button;
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3152
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3153 /* Foreground Color */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3154 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_FGCOLOR);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3155 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3156 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3157 gtk_tooltips_set_tip(gtkconv->tooltips, button,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3158 _("Foreground font color"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3159
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3160 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3161 G_CALLBACK(toggle_fg_color), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3162
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3163 gtkconv->toolbar.fgcolor = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3164
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3165 /* Background Color */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3166 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_BGCOLOR);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3167 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3168 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3169 gtk_tooltips_set_tip(gtkconv->tooltips, button,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3170 _("Background color"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3171
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3172 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3173 G_CALLBACK(toggle_bg_color), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3174
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3175 gtkconv->toolbar.bgcolor = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3176
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3177 /* Sep */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3178 sep = gtk_vseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3179 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3180
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3181 /* Insert IM Image */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3182 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_IMAGE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3183 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3184 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3185 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert image"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3186
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3187 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3188 G_CALLBACK(insert_image_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3189
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3190 gtkconv->toolbar.image = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3191
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3192 /* Insert Link */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3193 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_LINK);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3194 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3195 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3196 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert link"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3197
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3198 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3199 G_CALLBACK(insert_link_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3200
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3201 gtkconv->toolbar.link = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3202
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3203 /* Insert Smiley */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3204 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_SMILEY);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3205 gtk_size_group_add_widget(sg, button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3206 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3207 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert smiley"), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3208
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3209 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3210 G_CALLBACK(insert_smiley_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3211
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3212 gtkconv->toolbar.smiley = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3213
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3214
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3215 sep = gtk_hseparator_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3216 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3217
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3218 gtk_widget_show_all(vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3219
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3220 return vbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3221 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3222
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3223 static GtkWidget *
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3224 setup_chat_pane(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3225 {
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3226 GaimPluginProtocolInfo *prpl_info = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3227 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3228 GaimGtkChatPane *gtkchat;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
3229 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3230 GtkWidget *vpaned, *hpaned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3231 GtkWidget *vbox, *hbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3232 GtkWidget *lbox, *bbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3233 GtkWidget *label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3234 GtkWidget *sw2;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3235 GtkWidget *list;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3236 GtkWidget *button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3237 GtkWidget *frame;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3238 GtkListStore *ls;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3239 GtkCellRenderer *rend;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3240 GtkTreeViewColumn *col;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3241
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3242 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3243 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3244 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3245
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3246 /* Setup the outer pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3247 vpaned = gtk_vpaned_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3248 gtk_widget_show(vpaned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3249
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3250 /* Setup the top part of the pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3251 vbox = gtk_vbox_new(FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3252 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3253 gtk_widget_show(vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3254
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3255 if (gc != NULL)
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3256 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3257
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
3258 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3259 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3260 hbox = gtk_hbox_new(FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3261 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3262 gtk_widget_show(hbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3263
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3264 label = gtk_label_new(_("Topic:"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3265 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3266 gtk_widget_show(label);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3267
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3268 gtkchat->topic_text = gtk_entry_new();
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
3269 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3270 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3271 gtk_widget_show(gtkchat->topic_text);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3272 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3273
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3274 /* Setup the horizontal pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3275 hpaned = gtk_hpaned_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3276 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3277 gtk_widget_show(hpaned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3278
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3279 /* Setup the scrolled window to put gtkimhtml in. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3280 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3281 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3282 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3283 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3284 GTK_SHADOW_IN);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3285 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3286
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3287 gtk_widget_set_size_request(gtkconv->sw,
5550
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3288 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"),
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3289 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height"));
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3290
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3291 gtk_widget_show(gtkconv->sw);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3292
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3293 /* Setup gtkihmtml. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3294 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3295 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3296
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3297 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3298 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3299
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3300 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3301 G_CALLBACK(entry_stop_rclick_cb), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3302
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3303 gaim_setup_imhtml(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3304
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3305 gtk_widget_show(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3306
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3307 /* Build the right pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3308 lbox = gtk_vbox_new(FALSE, 5);
4409
0521eec12c33 [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3309 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3310 gtk_widget_show(lbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3311
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3312 /* Setup the label telling how many people are in the room. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3313 gtkchat->count = gtk_label_new(_("0 people in room"));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3314 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3315 gtk_widget_show(gtkchat->count);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3316
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3317 /* Setup the list of users. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3318 sw2 = gtk_scrolled_window_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3319 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3320 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3321 gtk_box_pack_start(GTK_BOX(lbox), sw2, TRUE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3322 gtk_widget_show(sw2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3323
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3324 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3325 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3326 GTK_SORT_ASCENDING);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3327
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3328 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3329
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3330 rend = gtk_cell_renderer_text_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3331 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3332 "text", 0, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3333 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3334
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3335 g_signal_connect(G_OBJECT(list), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3336 G_CALLBACK(right_click_chat_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3337
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3338 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3339
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3340 col = gtk_tree_view_column_new_with_attributes(NULL, rend,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3341 "text", 1, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3342 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3343
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3344 #if 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3345 g_signal_connect(G_OBJECT(list), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3346 G_CALLBACK(right_click_chat), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3347 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3348
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3349 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3350
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3351 gtk_widget_set_size_request(list, 150, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3352
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3353 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3354 gtk_widget_show(list);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3355
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3356 gtkchat->list = list;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3357
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3358 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), list);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3360 /* Setup the user list toolbar. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3361 bbox = gtk_hbox_new(TRUE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3362 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3363 gtk_widget_show(bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3364
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3365 /* IM */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3366 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3367 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3368 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3369 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3370 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3371 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3372 G_CALLBACK(im_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3373
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3374 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3375
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3376 /* Ignore */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3377 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3378 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3379 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3380 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3381 gtk_tooltips_set_tip(gtkconv->tooltips, button,
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3382 _("Ignore the user"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3383 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3384 G_CALLBACK(ignore_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3385 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3386
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3387 /* Info */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3388 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3389 GAIM_BUTTON_VERTICAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3390 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3391 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3392 gtk_tooltips_set_tip(gtkconv->tooltips, button,
4370
d856987c72ca [gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents: 4369
diff changeset
3393 _("Get the user's information"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3394 g_signal_connect(G_OBJECT(button), "clicked",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3395 G_CALLBACK(info_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3396
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3397 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3398
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3399 gtkconv->info = button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3400
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3401 /* Build the toolbar. */
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3402 vbox = gtk_vbox_new(FALSE, 5);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3403 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3404 gtk_widget_show(vbox);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3405
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3406 gtkconv->toolbar.toolbar = build_conv_toolbar(conv);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3407 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar.toolbar,
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3408 FALSE, FALSE, 0);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3409
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3410 /* Setup the entry widget. */
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3411 frame = gtk_frame_new(NULL);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3412 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3413 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3414 gtk_widget_show(frame);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3415
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3416 gtkconv->entry_buffer = gtk_text_buffer_new(NULL);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3417 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3418 gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3419
5105
4cfc49e31c2e [gaim-migrate @ 5468]
Luke Schierer <lschiere@pidgin.im>
parents: 5103
diff changeset
3420 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3421 gtk_widget_set_size_request(gtkconv->entry, -1,
5550
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3422 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"),
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3423 25));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3424
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3425 /* Connect the signal handlers. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3426 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3427 G_CALLBACK(entry_key_pressed_cb_1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3428 gtkconv->entry_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3429 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3430 G_CALLBACK(entry_stop_rclick_cb), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3431 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3432 G_CALLBACK(entry_key_pressed_cb_2), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3433
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3434 #ifdef USE_GTKSPELL
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3435 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3436 gtkspell_new_attach(GTK_TEXT_VIEW(gtkconv->entry), NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3437 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3438
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3439 gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(gtkconv->entry));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3440 gtk_widget_show(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3441
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3442 /* Setup the bottom button box. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3443 gtkconv->bbox = gtk_hbox_new(FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3444 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3445 gtk_widget_show(gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3446
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3447 setup_chat_buttons(conv, gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3448
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3449 return vpaned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3450 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3451
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3452 static GtkWidget *
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3453 setup_im_pane(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3454 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3455 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3456 GaimGtkImPane *gtkim;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3457 GtkWidget *paned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3458 GtkWidget *vbox;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3459 GtkWidget *vbox2;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3460 GtkWidget *frame;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3461
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3462 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3463 gtkim = gtkconv->u.im;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3464
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3465 /* Setup the outer pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3466 paned = gtk_vpaned_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3467 gtk_widget_show(paned);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3468
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3469 /* Setup the top part of the pane. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3470 vbox = gtk_vbox_new(FALSE, 5);
4409
0521eec12c33 [gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents: 4398
diff changeset
3471 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3472 gtk_widget_show(vbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3473
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3474 /* Setup the gtkimhtml widget. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3475 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3476 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3477 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3478 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3479 GTK_SHADOW_IN);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3480 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0);
4851
4b6bf5ed9c5e [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
3481
5550
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3482 gtk_widget_set_size_request(gtkconv->sw,
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3483 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"),
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3484 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3485 gtk_widget_show(gtkconv->sw);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3486
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3487 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3488 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3489
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3490 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3491 G_CALLBACK(entry_stop_rclick_cb), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3492
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3493 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3494 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3495
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3496 gaim_setup_imhtml(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3497
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3498 gtk_widget_show(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3499
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3500 vbox2 = gtk_vbox_new(FALSE, 5);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3501 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3502 gtk_widget_show(vbox2);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3503
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3504 /* Build the toolbar. */
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3505 gtkconv->toolbar.toolbar = build_conv_toolbar(conv);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3506 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar.toolbar,
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3507 FALSE, FALSE, 0);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3508
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3509 /* Setup the entry widget. */
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3510 frame = gtk_frame_new(NULL);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3511 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3512 gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3513 gtk_widget_show(frame);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3514
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3515 gtkconv->entry_buffer = gtk_text_buffer_new(NULL);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3516 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3517 gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer);
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3518
5105
4cfc49e31c2e [gaim-migrate @ 5468]
Luke Schierer <lschiere@pidgin.im>
parents: 5103
diff changeset
3519 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR);
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3520 gtk_widget_set_size_request(gtkconv->entry, -1,
5550
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3521 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"),
b18c2a37cc96 [gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents: 5546
diff changeset
3522 25));
4963
7f5e7f2ef317 [gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents: 4958
diff changeset
3523
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3524 /* Connect the signal handlers. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3525 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3526 G_CALLBACK(entry_key_pressed_cb_1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3527 gtkconv->entry_buffer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3528 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3529 G_CALLBACK(entry_key_pressed_cb_2), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3530 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3531 G_CALLBACK(entry_stop_rclick_cb), NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3532
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3533 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3534 G_CALLBACK(insert_text_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3535 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3536 G_CALLBACK(delete_text_cb), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3537
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3538 #ifdef USE_GTKSPELL
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3539 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3540 gtkspell_new_attach(GTK_TEXT_VIEW(gtkconv->entry), NULL, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3541 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3542
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3543 gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(gtkconv->entry));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3544 gtk_widget_show(gtkconv->entry);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3545
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3546 gtkconv->bbox = gtk_hbox_new(FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3547 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3548 gtk_widget_show(gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3549
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3550 setup_im_buttons(conv, gtkconv->bbox);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3551
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3552 return paned;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3553 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3554
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3555 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3556 move_next_tab(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3557 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3558 GaimConversation *next_conv = NULL;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3559 GaimWindow *win;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3560 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3561 int index, i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3562
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3563 win = gaim_conversation_get_window(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3564 index = gaim_conversation_get_index(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3565
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3566 /* First check the tabs after this position. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3567 for (l = g_list_nth(gaim_window_get_conversations(win), index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3568 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3569 l = l->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3570
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3571 next_conv = (GaimConversation *)l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3572
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3573 if (gaim_conversation_get_unseen(next_conv) > 0)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3574 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3575
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3576 next_conv = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3577 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3578
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3579 if (next_conv == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3580
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3581 /* Now check before this position. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3582 for (l = gaim_window_get_conversations(win), i = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3583 l != NULL && i < index;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3584 l = l->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3585
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3586 next_conv = (GaimConversation *)l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3587
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3588 if (gaim_conversation_get_unseen(next_conv) > 0)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3589 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3590
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3591 next_conv = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3592 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3593
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3594 if (next_conv == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3595 /* Okay, just grab the next conversation tab. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3596 if (index == gaim_window_get_conversation_count(win) - 1)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3597 next_conv = gaim_window_get_conversation_at(win, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3598 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3599 next_conv = gaim_window_get_conversation_at(win, index + 1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3600 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3601 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3602
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3603 if (next_conv != NULL && next_conv != conv) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3604 gaim_window_switch_conversation(win,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3605 gaim_conversation_get_index(next_conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3606 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3607 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3608
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3609 static void
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3610 conv_dnd_recv(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3611 GtkSelectionData *sd, guint info, guint t,
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3612 GaimConversation *conv)
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3613 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3614 GaimWindow *win = conv->window;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3615 GaimConversation *c;
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3616
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3617 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) {
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
3618 GaimBlistNode *n = NULL;
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
3619 memcpy(&n, sd->data, sizeof(n));
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3620
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
3621 if (!GAIM_BLIST_NODE_IS_BUDDY(n))
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
3622 return;
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3623
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3624 c = gaim_conversation_new(GAIM_CONV_IM,
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3625 ((struct buddy *)n)->account,
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3626 ((struct buddy *)n)->name);
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3627
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3628 gaim_window_add_conversation(win, c);
4702
cb5b23dfd82b [gaim-migrate @ 5013]
Sean Egan <seanegan@gmail.com>
parents: 4689
diff changeset
3629 }
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3630 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3631
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3632 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3633 * GTK+ window ops
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3634 **************************************************************************/
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3635 static GaimConversationUiOps *
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
3636 gaim_gtk_get_conversation_ui_ops(void)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3637 {
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
3638 return gaim_get_gtk_conversation_ui_ops();
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3639 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3640
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3641 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3642 gaim_gtk_new_window(GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3643 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3644 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3645 GtkPositionType pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3646 GtkWidget *testidea;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3647 GtkWidget *menubar;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3648
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3649 gtkwin = g_malloc0(sizeof(GaimGtkWindow));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3650
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3651 win->ui_data = gtkwin;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3652
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3653 /* Create the window. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3654 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3655 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation");
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
3656 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE);
4510
4c394222c732 [gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents: 4505
diff changeset
3657 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0);
5173
bfd1e4c681a1 [gaim-migrate @ 5537]
Nathan Walp <nwalp@pidgin.im>
parents: 5167
diff changeset
3658 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3659 gtk_widget_realize(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3660
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3661 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3662 G_CALLBACK(close_win_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3663
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3664 /* Create the notebook. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3665 gtkwin->notebook = gtk_notebook_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3666
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3667 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3668
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3669 #if 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3670 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3671 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3672 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3673 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3674 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3675 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook));
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3676 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE);
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3677
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3678 gtk_widget_show(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3679
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3680 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3681 G_CALLBACK(switch_conv_cb), win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3682
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3683 /* Setup the tab drag and drop signals. */
4486
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
3684 gtk_widget_add_events(gtkwin->notebook,
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
3685 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
3686 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event",
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3687 G_CALLBACK(notebook_press_cb), win);
4486
c3281e2af992 [gaim-migrate @ 4761]
Sean Egan <seanegan@gmail.com>
parents: 4485
diff changeset
3688 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event",
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3689 G_CALLBACK(notebook_release_cb), win);
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3690
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3691 testidea = gtk_vbox_new(FALSE, 0);
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3692
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3693 /* Setup the menubar. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3694 menubar = setup_menubar(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3695 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3696
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3697 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3698
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3699 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3700
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3701 gtk_widget_show(testidea);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3702 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3703
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3704 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3705 gaim_gtk_destroy_window(GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3706 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3707 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3708
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3709 gtk_widget_destroy(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3710
4630
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
3711 g_object_unref(G_OBJECT(gtkwin->menu.item_factory));
5cdfd20daa07 [gaim-migrate @ 4921]
Sean Egan <seanegan@gmail.com>
parents: 4621
diff changeset
3712
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3713 g_free(gtkwin);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3714 win->ui_data = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3715 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3716
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3717 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3718 gaim_gtk_show(GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3719 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3720 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3721
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3722 gtk_widget_show(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3723 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3724
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3725 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3726 gaim_gtk_hide(GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3727 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3728 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3729
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3730 gtk_widget_hide(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3731 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3732
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3733 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3734 gaim_gtk_raise(GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3735 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3736 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3737
5484
0a392a45e497 [gaim-migrate @ 5880]
Nathan Walp <nwalp@pidgin.im>
parents: 5462
diff changeset
3738 gtk_widget_show(gtkwin->window);
5103
bfcf72c5a930 [gaim-migrate @ 5466]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
3739 gtk_window_deiconify(GTK_WINDOW(gtkwin->window));
4526
e5b024352f9e [gaim-migrate @ 4804]
Nathan Walp <nwalp@pidgin.im>
parents: 4515
diff changeset
3740 gdk_window_raise(gtkwin->window->window);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3741 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3742
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3743 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3744 gaim_gtk_flash(GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3745 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3746 #ifdef _WIN32
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3747 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3748
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3749 wgaim_im_blink(gtkwin->window);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3750 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3751 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3752
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3753 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3754 gaim_gtk_switch_conversation(GaimWindow *win, unsigned int index)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3755 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3756 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3757
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3758 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3759
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3760 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3761 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3762
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3763 static const GtkTargetEntry te[] =
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3764 {
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3765 {"text/plain", 0, 0},
4702
cb5b23dfd82b [gaim-migrate @ 5013]
Sean Egan <seanegan@gmail.com>
parents: 4689
diff changeset
3766 {"text/uri-list", 0, 1},
4781
b6f33ba0a0c0 [gaim-migrate @ 5101]
Sean Egan <seanegan@gmail.com>
parents: 4770
diff changeset
3767 {"GAIM_BLIST_NODE", 0, 2},
4702
cb5b23dfd82b [gaim-migrate @ 5013]
Sean Egan <seanegan@gmail.com>
parents: 4689
diff changeset
3768 {"STRING", 0, 3}
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3769 };
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3770
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3771 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3772 gaim_gtk_add_conversation(GaimWindow *win, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3773 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3774 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3775 GaimGtkConversation *gtkconv, *focus_gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3776 GaimConversation *focus_conv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3777 GtkWidget *pane = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3778 GtkWidget *tab_cont;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3779 GtkWidget *tabby;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3780 gboolean new_ui;
4383
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3781 GaimConversationType conv_type;
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3782 const char *name;
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3783
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3784 name = gaim_conversation_get_name(conv);
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3785 conv_type = gaim_conversation_get_type(conv);
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3786 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3787
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3788 if (conv->ui_data != NULL) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3789 gtkconv = (GaimGtkConversation *)conv->ui_data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3790
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3791 tab_cont = gtkconv->tab_cont;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3792
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3793 new_ui = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3794 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3795 else {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3796 gtkconv = g_malloc0(sizeof(GaimGtkConversation));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3797 conv->ui_data = gtkconv;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3798
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3799 /* Setup some initial variables. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3800 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3801 gtkconv->tooltips = gtk_tooltips_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3802
4421
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
3803 /* Setup the foreground and background colors */
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
3804 gaim_gtkconv_update_font_colors(conv);
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
3805
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
3806 /* Setup the font face */
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
3807 gaim_gtkconv_update_font_face(conv);
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
3808
4383
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3809 if (conv_type == GAIM_CONV_CHAT) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3810 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3811
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3812 pane = setup_chat_pane(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3813 }
4383
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3814 else if (conv_type == GAIM_CONV_IM) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3815 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3816 gtkconv->u.im->a_virgin = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3817
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3818 pane = setup_im_pane(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3819 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3820
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3821 if (pane == NULL) {
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3822 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat);
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3823 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3824
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3825 g_free(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3826 conv->ui_data = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3827
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3828 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3829 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3830
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3831 /* Setup drag-and-drop */
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3832 gtk_drag_dest_set(pane,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3833 GTK_DEST_DEFAULT_MOTION |
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3834 GTK_DEST_DEFAULT_DROP,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3835 te, sizeof(te) / sizeof(GtkTargetEntry),
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3836 GDK_ACTION_COPY);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3837 gtk_drag_dest_set(gtkconv->imhtml,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3838 GTK_DEST_DEFAULT_MOTION |
4702
cb5b23dfd82b [gaim-migrate @ 5013]
Sean Egan <seanegan@gmail.com>
parents: 4689
diff changeset
3839 GTK_DEST_DEFAULT_DROP,
4689
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3840 te, sizeof(te) / sizeof(GtkTargetEntry),
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3841 GDK_ACTION_DEFAULT | GDK_ACTION_COPY | GDK_ACTION_MOVE);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3842 gtk_drag_dest_set(gtkconv->entry,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3843 GTK_DEST_DEFAULT_MOTION |
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3844 GTK_DEST_DEFAULT_DROP,
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3845 te, sizeof(te) / sizeof(GtkTargetEntry),
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3846 GDK_ACTION_COPY);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3847
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3848 g_signal_connect(G_OBJECT(pane), "drag_data_received",
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3849 G_CALLBACK(conv_dnd_recv), conv);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3850 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received",
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3851 G_CALLBACK(conv_dnd_recv), conv);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3852 #if 0
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3853 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received",
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3854 G_CALLBACK(conv_dnd_recv), conv);
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3855 #endif
69b19e132df0 [gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents: 4687
diff changeset
3856
4383
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3857 /*
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3858 * Write the New Conversation log string.
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3859 *
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3860 * This should probably be elsewhere, but then, logging should
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3861 * be moved out in some way, either via plugin or via a new API.
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3862 */
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3863 if (gaim_conversation_is_logging(conv) &&
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3864 conv_type != GAIM_CONV_MISC) {
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3865
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3866 FILE *fd;
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3867 char filename[256];
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3868
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3869 g_snprintf(filename, sizeof(filename), "%s%s", name,
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3870 (conv_type == GAIM_CONV_CHAT ? ".chat" : ""));
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3871
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3872 fd = open_log_file(filename, (conv_type == GAIM_CONV_CHAT));
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3873
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3874 if (fd) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3875 if (!gaim_prefs_get_bool("/gaim/gtk/logging/strip_html"))
4383
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3876 fprintf(fd,
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3877 "<HR><BR><H3 Align=Center> "
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3878 "---- New Conversation @ %s ----</H3><BR>\n",
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3879 full_date());
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3880 else
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3881 fprintf(fd, "---- New Conversation @ %s ----\n",
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3882 full_date());
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3883
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3884 fclose(fd);
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3885 }
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3886 }
f7a84034f97f [gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents: 4382
diff changeset
3887
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3888 /* Setup the container for the tab. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3889 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3890 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3891 gtk_container_add(GTK_CONTAINER(tab_cont), pane);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3892 gtk_widget_show(pane);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3893
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3894 new_ui = TRUE;
4636
f4a707dda673 [gaim-migrate @ 4944]
Luke Schierer <lschiere@pidgin.im>
parents: 4635
diff changeset
3895
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3896 gtkconv->make_sound = TRUE;
5902
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
3897
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
3898 g_signal_connect_swapped(G_OBJECT(pane), "focus",
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
3899 G_CALLBACK(gtk_widget_grab_focus),
6889b89cab90 [gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents: 5901
diff changeset
3900 gtkconv->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3901 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3902
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3903 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3904
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3905 /* Close button. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3906 gtkconv->close = gtk_button_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3907 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3908 gtk_container_add(GTK_CONTAINER(gtkconv->close),
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
3909 gtk_image_new_from_stock(GTK_STOCK_CLOSE,
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
3910 GTK_ICON_SIZE_MENU));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3911 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3912 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close,
4572
06084165a966 [gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents: 4571
diff changeset
3913 _("Close conversation"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3914
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3915 g_signal_connect(G_OBJECT(gtkconv->close), "clicked",
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
3916 G_CALLBACK(close_conv_cb), conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3917
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3918 /* Tab label. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3919 gtkconv->tab_label = gtk_label_new(gaim_conversation_get_title(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3920 #if 0
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3921 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3922 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3923 #endif
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3924
4939
4d50e125b0fa [gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents: 4931
diff changeset
3925
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3926 /* Pack it all together. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3927 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0);
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
3928 gtk_widget_show(gtkconv->tab_label);
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
3929 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3930
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3931 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs"))
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
3932 gtk_widget_show_all(gtkconv->close);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3933
4445
a65555132674 [gaim-migrate @ 4720]
Sean Egan <seanegan@gmail.com>
parents: 4438
diff changeset
3934 gtk_widget_show(tabby);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3935
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3936
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3937 /* Add this pane to the conversations notebook. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3938 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3939 gtk_notebook_set_menu_label_text(GTK_NOTEBOOK(gtkwin->notebook), tab_cont,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3940 gaim_conversation_get_title(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3941
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3942 gtk_widget_show(tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3943
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3944 if (gaim_window_get_conversation_count(win) == 1) {
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3945 /* Er, bug in notebooks? Switch to the page manually. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3946 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0);
4851
4b6bf5ed9c5e [gaim-migrate @ 5178]
Nathan Walp <nwalp@pidgin.im>
parents: 4849
diff changeset
3947
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3948 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3949 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3950 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3951 else
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3952 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3953
5204
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
3954 focus_conv = g_list_nth_data(gaim_window_get_conversations(win),
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
3955 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)));
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
3956 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv);
44de70702205 [gaim-migrate @ 5570]
Nathan Walp <nwalp@pidgin.im>
parents: 5173
diff changeset
3957 gtk_widget_grab_focus(focus_gtkconv->entry);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3958
5881
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
3959 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
3960 gaim_gtkconv_update_buddy_icon(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3961
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3962 if (!new_ui)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3963 g_object_unref(gtkconv->tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3964
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3965 if (gaim_window_get_conversation_count(win) == 1)
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
3966 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3967 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3968
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3969 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3970 gaim_gtk_remove_conversation(GaimWindow *win, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3971 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3972 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
3973 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3974 unsigned int index;
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3975 GaimConversationType conv_type;
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3976
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3977 conv_type = gaim_conversation_get_type(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3978 index = gaim_conversation_get_index(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3979
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3980 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3981 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3982
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3983 g_object_ref(gtkconv->tab_cont);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3984 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3985
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3986 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3987
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3988 /* go back to tabless if need be */
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3989 if (gaim_window_get_conversation_count(win) <= 2) {
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3990 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook),
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
3991 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs"));
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3992 }
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3993
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3994
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3995 /* If this window is setup with an inactive gc, regenerate the menu. */
4818
1c371e4244d6 [gaim-migrate @ 5142]
Nathan Walp <nwalp@pidgin.im>
parents: 4812
diff changeset
3996 if (conv_type == GAIM_CONV_IM &&
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3997 gaim_conversation_get_gc(conv) == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3998
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
3999 generate_send_as_items(win, conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4000 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4001 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4002
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4003 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4004 gaim_gtk_move_conversation(GaimWindow *win, GaimConversation *conv,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4005 unsigned int new_index)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4006 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4007 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4008 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4009
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4010 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4011 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4012
4415
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4013 if (new_index > gaim_conversation_get_index(conv))
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4014 new_index--;
c90039137172 [gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents: 4409
diff changeset
4015
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4016 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4017 gtkconv->tab_cont, new_index);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4018 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4019
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4020 static int
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4021 gaim_gtk_get_active_index(const GaimWindow *win)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4022 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4023 GaimGtkWindow *gtkwin;
5680
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4024 int index;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4025
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4026 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4027
5680
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4028 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook));
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4029
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4030 /*
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4031 * A fix, because the first conversation may be active, but not
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4032 * appear in the notebook just yet. -- ChipX86
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4033 */
71cc0d5376c2 [gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents: 5678
diff changeset
4034 return (index == -1 ? 0 : index);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4035 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4036
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4037 static GaimWindowUiOps window_ui_ops =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4038 {
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4039 gaim_gtk_get_conversation_ui_ops,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4040 gaim_gtk_new_window,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4041 gaim_gtk_destroy_window,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4042 gaim_gtk_show,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4043 gaim_gtk_hide,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4044 gaim_gtk_raise,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4045 gaim_gtk_flash,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4046 gaim_gtk_switch_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4047 gaim_gtk_add_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4048 gaim_gtk_remove_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4049 gaim_gtk_move_conversation,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4050 gaim_gtk_get_active_index
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4051 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4052
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4053 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4054 update_convo_add_button(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4055 {
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4056 GaimPluginProtocolInfo *prpl_info = NULL;
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4057 GaimWindow *win;
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4058 GaimGtkWindow *gtkwin;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4059 GaimGtkConversation *gtkconv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
4060 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4061 GaimConversationType type;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4062 GtkWidget *parent;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4063
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4064 gc = gaim_conversation_get_gc(conv);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4065 win = gaim_conversation_get_window(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4066 type = gaim_conversation_get_type(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4067 gtkconv = GAIM_GTK_CONVERSATION(conv);
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4068 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4069 parent = gtk_widget_get_parent(gtkconv->u.im->add);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4070
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4071 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4072
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4685
diff changeset
4073 if (gaim_find_buddy(gc->account, gaim_conversation_get_name(conv))) {
4397
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4074 gtkconv->u.im->add =
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4075 gaim_gtk_change_text(_("Remove"), gtkconv->u.im->add,
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4076 GTK_STOCK_REMOVE, type);
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4077 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add,
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4078 _("Remove the user from your buddy list"), NULL);
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4079
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4080 gtk_widget_set_sensitive(gtkconv->u.im->add,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4081 (gc != NULL && prpl_info->remove_buddy != NULL));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4082
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4083 if (gaim_window_get_active_conversation(win) == conv) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4084 gtk_widget_show(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4085 gtk_widget_hide(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4086 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4087 }
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4088 else {
4397
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4089 gtkconv->u.im->add =
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4090 gaim_gtk_change_text(_("Add"), gtkconv->u.im->add,
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4091 GTK_STOCK_ADD, type);
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4092 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add,
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4093 _("Add the user to your buddy list"), NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4094
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4095 gtk_widget_set_sensitive(gtkconv->u.im->add,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4096 (gc != NULL && prpl_info->add_buddy != NULL));
5908
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4097
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4098 if (gaim_window_get_active_conversation(win) == conv) {
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4099 gtk_widget_show(gtkwin->menu.add);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4100 gtk_widget_hide(gtkwin->menu.remove);
ed8a9a3bf7e2 [gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents: 5907
diff changeset
4101 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4102 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4103
4397
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4104 g_signal_connect(G_OBJECT(gtkconv->u.im->add), "clicked",
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4105 G_CALLBACK(add_cb), conv);
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4106
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4107 gtk_box_pack_start(GTK_BOX(parent), gtkconv->u.im->add,
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4108 FALSE, FALSE, 0);
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4109 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->u.im->add, 3);
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4110 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.im->add), GTK_RELIEF_NONE);
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4111 gtk_size_group_add_widget(gtkconv->sg, gtkconv->u.im->add);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4112 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4113
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4114 GaimWindowUiOps *
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4115 gaim_get_gtk_window_ui_ops(void)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4116 {
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4117 return &window_ui_ops;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4118 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4119
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4120 /**************************************************************************
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4121 * Conversation UI operations
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4122 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4123 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4124 gaim_gtkconv_destroy(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4125 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4126 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4127
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4128 if (gtkconv->dialogs.fg_color != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4129 gtk_widget_destroy(gtkconv->dialogs.fg_color);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4130
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4131 if (gtkconv->dialogs.bg_color != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4132 gtk_widget_destroy(gtkconv->dialogs.bg_color);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4133
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4134 if (gtkconv->dialogs.font != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4135 gtk_widget_destroy(gtkconv->dialogs.font);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4136
5959
0a2a32b1917c [gaim-migrate @ 6405]
Mark Doliner <mark@kingant.net>
parents: 5934
diff changeset
4137 if (gtkconv->dialogs.image != NULL)
0a2a32b1917c [gaim-migrate @ 6405]
Mark Doliner <mark@kingant.net>
parents: 5934
diff changeset
4138 gtk_widget_destroy(gtkconv->dialogs.image);
0a2a32b1917c [gaim-migrate @ 6405]
Mark Doliner <mark@kingant.net>
parents: 5934
diff changeset
4139
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4140 if (gtkconv->dialogs.smiley != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4141 gtk_widget_destroy(gtkconv->dialogs.smiley);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4142
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4143 if (gtkconv->dialogs.link != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4144 gtk_widget_destroy(gtkconv->dialogs.link);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4145
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4146 if (gtkconv->dialogs.log != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4147 gtk_widget_destroy(gtkconv->dialogs.log);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4148
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4149 gtk_widget_destroy(gtkconv->tab_cont);
4892
dc6de8ad81ae [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4859
diff changeset
4150 g_object_unref(gtkconv->tab_cont);
4571
51e988d015ed [gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents: 4561
diff changeset
4151
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4152 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
4755
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4153 if (gtkconv->u.im->icon_timer != 0)
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4154 g_source_remove(gtkconv->u.im->icon_timer);
54fbd9769677 [gaim-migrate @ 5072]
Mark Doliner <mark@kingant.net>
parents: 4748
diff changeset
4155
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4156 if (gtkconv->u.im->save_icon != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4157 gtk_widget_destroy(gtkconv->u.im->save_icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4158
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4159 if (gtkconv->u.im->anim != NULL)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4160 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4161
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4162 g_free(gtkconv->u.im);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4163 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4164 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4165 g_free(gtkconv->u.chat);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4166 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4167
4633
812148fb2e2f [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4168 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips));
812148fb2e2f [gaim-migrate @ 4931]
Nathan Walp <nwalp@pidgin.im>
parents: 4631
diff changeset
4169
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4170 g_free(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4171 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4172
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4173 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4174 gaim_gtkconv_write_im(GaimConversation *conv, const char *who,
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4175 const char *message, size_t len, int flags,
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4176 time_t mtime)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4177 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4178 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4179
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4180 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4181
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4182 if (!(flags & WFLAG_NOLOG) &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4183 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4184
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4185 gaim_window_raise(gaim_conversation_get_window(conv));
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4186 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4187
4382
76223649765b [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4188 /* Play a sound, if specified in prefs. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4189 if (gtkconv->make_sound) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4190 if (flags & WFLAG_RECV) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4191 if (gtkconv->u.im->a_virgin &&
5820
a929723531c8 [gaim-migrate @ 6250]
Nathan Walp <nwalp@pidgin.im>
parents: 5754
diff changeset
4192 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4193
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4194 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4195 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4196 else
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4197 gaim_sound_play_event(GAIM_SOUND_RECEIVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4198 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4199 else {
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4200 gaim_sound_play_event(GAIM_SOUND_SEND);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4201 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4202 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4203
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4204 gtkconv->u.im->a_virgin = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4205
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4206 gaim_conversation_write(conv, who, message, len, flags, mtime);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4207 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4208
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4209 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4210 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4211 const char *message, int flags, time_t mtime)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4212 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4213 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4214
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4215 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4216
4382
76223649765b [gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents: 4378
diff changeset
4217 /* Play a sound, if specified in prefs. */
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4218 if (gtkconv->make_sound) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4219 if (!(flags & WFLAG_WHISPER) && (flags & WFLAG_SEND))
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4220 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4221 else if (flags & WFLAG_RECV) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4222 if ((flags & WFLAG_NICK) &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4223 gaim_prefs_get_bool("/gaim/gtk/sound/nick_said")) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4224
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4225 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4226 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4227 else
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4228 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4229 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4230 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4231
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4232 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4233 flags |= WFLAG_COLORIZE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4234
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4235 /* Raise the window, if specified in prefs. */
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4236 if (!(flags & WFLAG_NOLOG) &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4237 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4238
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4239 gaim_window_raise(gaim_conversation_get_window(conv));
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4240 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4241
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4242 gaim_conversation_write(conv, who, message, -1, flags, mtime);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4243 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4244
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4245 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4246 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who,
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4247 const char *message, size_t length, int flags,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4248 time_t mtime)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4249 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4250 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4251 GaimWindow *win;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
4252 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4253 int gtk_font_options = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4254 GString *log_str;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4255 FILE *fd;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4256 char buf[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4257 char buf2[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4258 char mdate[64];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4259 char color[10];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4260 char *str;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4261 char *with_font_tag;
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4262 char *sml_attrib = NULL;
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4263
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4264 if(length == -1)
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4265 length = strlen(message) + 1;
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4266
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4267 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4268 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4269
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4270 win = gaim_conversation_get_window(conv);
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4271
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4272 if (!(flags & WFLAG_NOLOG) &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4273 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4274 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) ||
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4275 (gaim_conversation_get_type(conv) == GAIM_CONV_IM &&
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4276 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") ||
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4277 gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))))) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4278
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4279 gaim_window_show(win);
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4280 }
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4281
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4282
5133
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4283 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4284 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime));
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4285 else
9f40039a027f [gaim-migrate @ 5496]
Nathan Walp <nwalp@pidgin.im>
parents: 5121
diff changeset
4286 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4287
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4288 if(gc)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
4289 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name);
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4290
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4291 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4292
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4293 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4294 gtk_font_options ^= GTK_IMHTML_NO_COLOURS;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4295
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4296 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4297 gtk_font_options ^= GTK_IMHTML_NO_FONTS;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4298
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4299 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4300 gtk_font_options ^= GTK_IMHTML_NO_SIZES;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4301
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4302 if (!gaim_prefs_get_bool("/gaim/gtk/logging/strip_html"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4303 gtk_font_options ^= GTK_IMHTML_RETURN_LOG;
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4304
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4305 if (GAIM_PLUGIN_PROTOCOL_INFO(conv->account->gc->prpl)->options &
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4306 OPT_PROTO_USE_POINTSIZE) {
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4307
5367
fc0441fbf159 [gaim-migrate @ 5743]
Luke Schierer <lschiere@pidgin.im>
parents: 5329
diff changeset
4308 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE;
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4309 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4310
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4311 if (flags & WFLAG_SYSTEM) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4312 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
5329
5e1eeeba4e68 [gaim-migrate @ 5702]
Luke Schierer <lschiere@pidgin.im>
parents: 5314
diff changeset
4313 g_snprintf(buf, BUF_LONG, "(%s) <B>%s</B>",
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4314 mdate, message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4315 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4316 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4317
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4318 g_snprintf(buf2, sizeof(buf2),
5329
5e1eeeba4e68 [gaim-migrate @ 5702]
Luke Schierer <lschiere@pidgin.im>
parents: 5314
diff changeset
4319 "<!--(%s) --><B>%s</B><BR>",
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4320 mdate, message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4321
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4322 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, -1, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4323
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4324 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4325 char *t1 = strip_html(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4326
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4327 conv->history = g_string_append(conv->history, t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4328 conv->history = g_string_append(conv->history, "\n");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4329
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4330 g_free(t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4331 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4332 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4333 conv->history = g_string_append(conv->history, buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4334 conv->history = g_string_append(conv->history, "<BR>\n");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4335 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4336
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4337 if (!(flags & WFLAG_NOLOG) && gaim_conversation_is_logging(conv)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4338
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4339 char *t1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4340 char nm[256];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4341
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4342 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4343 t1 = strip_html(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4344 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4345 t1 = buf;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4346
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4347 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4348 g_snprintf(nm, sizeof(nm), "%s.chat",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4349 gaim_conversation_get_name(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4350 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4351 strncpy(nm, gaim_conversation_get_name(conv), sizeof(nm));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4352
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4353 fd = open_log_file(nm,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4354 (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4355
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4356 if (fd) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4357 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4358 fprintf(fd, "%s\n", t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4359 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4360 fprintf(fd, "%s<BR>\n", t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4361
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4362 fclose(fd);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4363 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4364
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4365 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4366 g_free(t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4367 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4368 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4369 else if (flags & WFLAG_NOLOG) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4370 g_snprintf(buf, BUF_LONG,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4371 "<B><FONT COLOR=\"#777777\">%s</FONT></B><BR>",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4372 message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4373
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4374 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf, -1, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4375 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4376 else {
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4377 char *new_message = g_memdup(message, length);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4378
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4379 if (flags & WFLAG_WHISPER) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4380 str = g_malloc(1024);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4381
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4382 /* If we're whispering, it's not an autoresponse. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4383 if (meify(new_message, length)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4384 g_snprintf(str, 1024, "***%s", who);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4385 strcpy(color, "#6C2585");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4386 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4387 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4388 g_snprintf(str, 1024, "*%s*:", who);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4389 strcpy(color, "#00FF00");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4390 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4391 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4392 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4393 if (meify(new_message, length)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4394 str = g_malloc(1024);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4395
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4396 if (flags & WFLAG_AUTO)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4397 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4398 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4399 g_snprintf(str, 1024, "***%s", who);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4400
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4401 if (flags & WFLAG_NICK)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4402 strcpy(color, "#AF7F00");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4403 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4404 strcpy(color, "#062585");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4405 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4406 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4407 str = g_malloc(1024);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4408
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4409 if (flags & WFLAG_AUTO)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4410 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4411 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4412 g_snprintf(str, 1024, "%s:", who);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4413
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4414 if (flags & WFLAG_NICK)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4415 strcpy(color, "#AF7F00");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4416 else if (flags & WFLAG_RECV) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4417 if (flags & WFLAG_COLORIZE) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4418 const char *u;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4419 int m = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4420
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4421 for (u = who; *u != '\0'; u++)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4422 m += *u;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4423
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4424 m = m % NUM_NICK_COLORS;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4425
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4426 strcpy(color, nick_colors[m]);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4427 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4428 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4429 strcpy(color, "#A82F2F");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4430 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4431 else if (flags & WFLAG_SEND)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4432 strcpy(color, "#16569E");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4433 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4434 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4435
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4436 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4437 g_snprintf(buf, BUF_LONG,
5329
5e1eeeba4e68 [gaim-migrate @ 5702]
Luke Schierer <lschiere@pidgin.im>
parents: 5314
diff changeset
4438 "<FONT COLOR=\"%s\" %s>(%s) "
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4439 "<B>%s</B></FONT> ", color,
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4440 sml_attrib ? sml_attrib : "", mdate, str);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4441 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4442 g_snprintf(buf, BUF_LONG,
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4443 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color,
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4444 sml_attrib ? sml_attrib : "", str);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4445
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4446 g_snprintf(buf2, BUF_LONG,
5329
5e1eeeba4e68 [gaim-migrate @ 5702]
Luke Schierer <lschiere@pidgin.im>
parents: 5314
diff changeset
4447 "<FONT COLOR=\"%s\" %s><!--(%s) -->"
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4448 "<B>%s</B></FONT> ",
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4449 color, sml_attrib ? sml_attrib : "", mdate, str);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4450
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4451 g_free(str);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4452
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4453 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, -1, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4454
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4455 if(gc){
4896
3c649fe22e2c [gaim-migrate @ 5228]
Nathan Walp <nwalp@pidgin.im>
parents: 4895
diff changeset
4456 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : "");
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4457 char *post = "</font>";
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4458 int pre_len = strlen(pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4459 int post_len = strlen(post);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4460
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4461 with_font_tag = g_malloc(length + pre_len + post_len + 1);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4462
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4463 strcpy(with_font_tag, pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4464 memcpy(with_font_tag + pre_len, new_message, length);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4465 strcpy(with_font_tag + pre_len + length, post);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4466
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4467 length += pre_len + post_len;
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4468 g_free(pre);
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4469 }
4608
5fcb44d771d2 [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4602
diff changeset
4470 else
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4471 with_font_tag = g_memdup(new_message, length);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4472
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4473 log_str = gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml),
4895
9e50494f63a1 [gaim-migrate @ 5227]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
4474 with_font_tag, length, gtk_font_options);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4475
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4476 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", -1, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4477
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4478 /* XXX This needs to be updated for the new length argument. */
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4479 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4480 char *t1, *t2;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4481
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4482 t1 = strip_html(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4483 t2 = strip_html(new_message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4484
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4485 conv->history = g_string_append(conv->history, t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4486 conv->history = g_string_append(conv->history, t2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4487 conv->history = g_string_append(conv->history, "\n");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4488
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4489 g_free(t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4490 g_free(t2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4491 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4492 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4493 char *t1, *t2;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4494
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4495 t1 = html_logize(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4496 t2 = html_logize(new_message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4497
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4498 conv->history = g_string_append(conv->history, t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4499 conv->history = g_string_append(conv->history, t2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4500 conv->history = g_string_append(conv->history, "\n");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4501 conv->history = g_string_append(conv->history, log_str->str);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4502 conv->history = g_string_append(conv->history, "<BR>\n");
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4503
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4504 g_free(t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4505 g_free(t2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4506 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4507
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4508 /* XXX This needs to be updated for the new length argument. */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4509 if (gaim_conversation_is_logging(conv)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4510 char *t1, *t2;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4511 char nm[256];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4512
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4513 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4514 g_snprintf(nm, sizeof(nm), "%s.chat",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4515 gaim_conversation_get_name(conv));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4516 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4517 strncpy(nm, gaim_conversation_get_name(conv), sizeof(nm));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4518
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4519 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4520 t1 = strip_html(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4521 t2 = strip_html(with_font_tag);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4522 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4523 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4524 t1 = html_logize(buf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4525 t2 = html_logize(with_font_tag);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4526 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4527
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4528 fd = open_log_file(nm,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4529 (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4530
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4531 if (fd) {
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
4532 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4533 fprintf(fd, "%s%s\n", t1, t2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4534 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4535 fprintf(fd, "%s%s%s<BR>\n", t1, t2, log_str->str);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4536 g_string_free(log_str, TRUE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4537 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4538
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4539 fclose(fd);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4540 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4541
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4542 g_free(t1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4543 g_free(t2);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4544 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4545
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4546 g_free(with_font_tag);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4547 g_free(new_message);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4548 }
5012
3ee1b1409660 [gaim-migrate @ 5348]
Nathan Walp <nwalp@pidgin.im>
parents: 4965
diff changeset
4549 if(sml_attrib)
3ee1b1409660 [gaim-migrate @ 5348]
Nathan Walp <nwalp@pidgin.im>
parents: 4965
diff changeset
4550 g_free(sml_attrib);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4551 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4552
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4553 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4554 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4555 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4556 GaimChat *chat;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4557 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4558 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4559 char tmp[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4560 int num_users;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4561 int pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4562
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4563 chat = GAIM_CHAT(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4564 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4565 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4566
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4567 num_users = g_list_length(gaim_chat_get_users(chat));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4568
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4569 g_snprintf(tmp, sizeof(tmp),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4570 ngettext("%d person in room", "%d people in room",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4571 num_users),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4572 num_users);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4573
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4574 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4575
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4576 if (gtkconv->make_sound)
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4577 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4578
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4579 pos = g_list_index(gaim_chat_get_users(chat), user);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4580
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4581 add_chat_buddy_common(conv, user, pos);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4582 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4583
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4584 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4585 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name,
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4586 const char *new_name)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4587 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4588 GaimChat *chat;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4589 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4590 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4591 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4592 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4593 GList *names;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4594 int pos;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4595 int f = 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4596
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4597 chat = GAIM_CHAT(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4598 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4599 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4600
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4601 for (names = gaim_chat_get_users(chat);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4602 names != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4603 names = names->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4604
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4605 char *u = (char *)names->data;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4606
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4607 if (!gaim_utf8_strcasecmp(u, old_name)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4608 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4609
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4610 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4611 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4612
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4613 while (f != 0) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4614 char *val;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4615
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4616 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4617
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4618 if (!gaim_utf8_strcasecmp(old_name, val)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4619 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
4640
951204c08b13 [gaim-migrate @ 4949]
Nathan Walp <nwalp@pidgin.im>
parents: 4636
diff changeset
4620 break;
951204c08b13 [gaim-migrate @ 4949]
Nathan Walp <nwalp@pidgin.im>
parents: 4636
diff changeset
4621 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4622
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4623 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4624
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4625 g_free(val);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4626 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4627
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4628 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4629 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4630 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4631
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4632 if (!names)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4633 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4634
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4635 pos = g_list_index(gaim_chat_get_users(chat), new_name);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4636
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4637 add_chat_buddy_common(conv, new_name, pos);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4638 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4639
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4640 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4641 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4642 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4643 GaimChat *chat;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4644 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4645 GaimGtkChatPane *gtkchat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4646 GtkTreeIter iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4647 GtkTreeModel *model;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4648 GList *names;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4649 char tmp[BUF_LONG];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4650 int num_users;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4651 int f = 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4652
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4653 chat = GAIM_CHAT(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4654 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4655 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4656
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4657 num_users = g_list_length(gaim_chat_get_users(chat)) - 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4658
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4659 for (names = gaim_chat_get_users(chat);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4660 names != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4661 names = names->next) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4662
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4663 char *u = (char *)names->data;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4664
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4665 if (!gaim_utf8_strcasecmp(u, user)) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4666 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4667
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4668 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4669 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4670
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4671 while (f != 0) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4672 char *val;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4673
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4674 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4675
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4676 if (!gaim_utf8_strcasecmp(user, val))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4677 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4678
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4679 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4680
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4681 g_free(val);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4682 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4683
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4684 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4685 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4686 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4687
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4688 if (names == NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4689 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4690
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4691 g_snprintf(tmp, sizeof(tmp),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4692 ngettext("%d person in room", "%d people in room",
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4693 num_users), num_users);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4694
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4695 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4696
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4697 if (gtkconv->make_sound)
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4526
diff changeset
4698 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4699 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4700
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4701 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4702 gaim_gtkconv_set_title(GaimConversation *conv, const char *title)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4703 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4704 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4705 GaimWindow *win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4706 GaimGtkWindow *gtkwin;
4681
efa194b5caaf [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4707
efa194b5caaf [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4708 win = gaim_conversation_get_window(conv);
efa194b5caaf [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4709 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4710 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4711
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4712 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title);
4681
efa194b5caaf [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4713
efa194b5caaf [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4714 if(conv == gaim_window_get_active_conversation(win))
efa194b5caaf [gaim-migrate @ 4992]
Nathan Walp <nwalp@pidgin.im>
parents: 4674
diff changeset
4715 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4716 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4717
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4718 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4719 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4720 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4721 GaimWindow *win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4722 GaimGtkWindow *gtkwin;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4723 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4724 GaimGtkChatPane *gtkchat;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4725 GaimChat *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4726
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4727 win = gaim_conversation_get_window(conv);
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4728 gtkwin = GAIM_GTK_WINDOW(win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4729 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4730
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4486
diff changeset
4731 if (type == GAIM_CONV_UPDATE_ACCOUNT) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4732 gaim_conversation_autoset_title(conv);
5881
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4733
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4734 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4735 gaim_gtkconv_update_buddy_icon(conv);
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
4736
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4737 gaim_gtkconv_update_buttons_by_protocol(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4738
4685
794cc8ec1166 [gaim-migrate @ 4996]
Nathan Walp <nwalp@pidgin.im>
parents: 4681
diff changeset
4739 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4740
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4741 smiley_themeize(gtkconv->imhtml);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4742 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4743 else if (type == GAIM_CONV_UPDATE_TYPING ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4744 type == GAIM_CONV_UPDATE_UNSEEN) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4745 GtkStyle *style;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4746 GaimIm *im = NULL;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4747
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4748
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4749 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4750 im = GAIM_IM(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4751
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4752 style = gtk_style_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4753
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4754 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4755 gtk_widget_realize(gtkconv->tab_label);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4756
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
4757 pango_font_description_free(style->font_desc);
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
4758 style->font_desc = pango_font_description_copy(
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
4759 gtk_widget_get_style(gtkconv->tab_label)->font_desc);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4760
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
4761 if (im != NULL && gaim_im_get_typing_state(im) == GAIM_TYPING) {
4577
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4762 style->fg[GTK_STATE_NORMAL].red = 0x4646;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4763 style->fg[GTK_STATE_NORMAL].green = 0xA0A0;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4764 style->fg[GTK_STATE_NORMAL].blue = 0x4646;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4765 style->fg[GTK_STATE_ACTIVE] = style->fg[GTK_STATE_NORMAL];
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4766 }
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5860
diff changeset
4767 else if (im != NULL && gaim_im_get_typing_state(im) == GAIM_TYPED) {
4577
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4768 style->fg[GTK_STATE_NORMAL].red = 0xD1D1;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4769 style->fg[GTK_STATE_NORMAL].green = 0x9494;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4770 style->fg[GTK_STATE_NORMAL].blue = 0x0C0C;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4771 style->fg[GTK_STATE_ACTIVE] = style->fg[GTK_STATE_NORMAL];
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4772 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4773 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) {
4577
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4774 style->fg[GTK_STATE_ACTIVE].red = 0x3131;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4775 style->fg[GTK_STATE_ACTIVE].green = 0x4E4E;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4776 style->fg[GTK_STATE_ACTIVE].blue = 0x6C6C;
4578
3db8a7cfd971 [gaim-migrate @ 4859]
Nathan Walp <nwalp@pidgin.im>
parents: 4577
diff changeset
4777 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE];
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4778 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4779 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT) {
4577
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4780 style->fg[GTK_STATE_ACTIVE].red = 0xDFDF;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4781 style->fg[GTK_STATE_ACTIVE].green = 0x4242;
00e46bfa0eba [gaim-migrate @ 4858]
Nathan Walp <nwalp@pidgin.im>
parents: 4572
diff changeset
4782 style->fg[GTK_STATE_ACTIVE].blue = 0x1E1E;
4578
3db8a7cfd971 [gaim-migrate @ 4859]
Nathan Walp <nwalp@pidgin.im>
parents: 4577
diff changeset
4783 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE];
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4784 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4785
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4786 gtk_widget_set_style(gtkconv->tab_label, style);
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
4787 g_object_unref(G_OBJECT(style));
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4788
4812
3b0b7c8470ec [gaim-migrate @ 5135]
Nathan Walp <nwalp@pidgin.im>
parents: 4803
diff changeset
4789 if(conv == gaim_window_get_active_conversation(win)) {
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4790 update_typing_icon(conv);
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4791 }
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4792
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4793 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4794 else if (type == GAIM_CONV_UPDATE_TOPIC) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4795 chat = GAIM_CHAT(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4796 gtkchat = gtkconv->u.chat;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4797
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4798 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4799 gaim_chat_get_topic(chat));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4800 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4801 else if (type == GAIM_CONV_ACCOUNT_ONLINE ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4802 type == GAIM_CONV_ACCOUNT_OFFLINE) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4803
4360
c435a29370b8 [gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
4804 generate_send_as_items(win, NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4805 }
4397
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4806 else if(type == GAIM_CONV_UPDATE_ADD ||
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4807 type == GAIM_CONV_UPDATE_REMOVE) {
4736
0c85078fd371 [gaim-migrate @ 5051]
Nathan Walp <nwalp@pidgin.im>
parents: 4702
diff changeset
4808
4397
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4809 update_convo_add_button(conv);
ce3a0eba91ef [gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents: 4387
diff changeset
4810 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4811 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4812
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4813 static GaimConversationUiOps conversation_ui_ops =
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4814 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4815 gaim_gtkconv_destroy, /* destroy_conversation */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4816 gaim_gtkconv_write_chat, /* write_chat */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4817 gaim_gtkconv_write_im, /* write_im */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4818 gaim_gtkconv_write_conv, /* write_conv */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4819 gaim_gtkconv_chat_add_user, /* chat_add_user */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4820 gaim_gtkconv_chat_rename_user, /* chat_rename_user */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4821 gaim_gtkconv_chat_remove_user, /* chat_remove_user */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4822 gaim_gtkconv_set_title, /* set_title */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4823 NULL, /* update_progress */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4824 gaim_gtkconv_updated /* updated */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4825 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4826
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4827 GaimConversationUiOps *
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4828 gaim_get_gtk_conversation_ui_ops(void)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4829 {
4465
6e37eb000b7a [gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents: 4454
diff changeset
4830 return &conversation_ui_ops;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4831 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4832
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4833 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4834 * Public conversation utility functions
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4835 **************************************************************************/
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4836 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4837 remove_icon(GaimGtkConversation *gtkconv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4838 {
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
4839 g_return_if_fail(gtkconv != NULL);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4840
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4841 if (gtkconv->u.im->icon != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4842 gtk_container_remove(GTK_CONTAINER(gtkconv->bbox),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4843 gtkconv->u.im->icon->parent->parent);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4844
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4845 if (gtkconv->u.im->anim != NULL)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4846 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4847
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4848 if (gtkconv->u.im->icon_timer != 0)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4849 g_source_remove(gtkconv->u.im->icon_timer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4850
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4851 if (gtkconv->u.im->iter != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4852 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4853
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4854 gtkconv->u.im->icon_timer = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4855 gtkconv->u.im->icon = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4856 gtkconv->u.im->anim = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4857 gtkconv->u.im->iter = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4858 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4859
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4860 static gboolean
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4861 redraw_icon(gpointer data)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4862 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4863 GaimConversation *conv = (GaimConversation *)data;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4864 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4865
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4866 GdkPixbuf *buf;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4867 GdkPixbuf *scale;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4868 GdkPixmap *pm;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4869 GdkBitmap *bm;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4870 gint delay;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4871
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4872 if (!g_list_find(gaim_get_ims(), conv)) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
4873 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
4874 "Conversation not found in redraw_icon. I think this "
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
4875 "is a bug.\n");
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4876 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4877 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4878
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4879 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4880
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4881 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4882 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4883
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4884 scale = gdk_pixbuf_scale_simple(buf,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4885 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) /
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4886 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4887 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) /
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4888 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4889 GDK_INTERP_NEAREST);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4890
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4891 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4892 g_object_unref(G_OBJECT(scale));
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
4893 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4894 g_object_unref(G_OBJECT(pm));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4895 gtk_widget_queue_draw(gtkconv->u.im->icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4896
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4897 if (bm)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
4898 g_object_unref(G_OBJECT(bm));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4899
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4900 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4901
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4902 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4903
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4904 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4905 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4906
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4907 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4908 start_anim(GtkObject *obj, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4909 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4910 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4911 int delay;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4912
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
4913 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4914 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4915
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4916 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4917
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4918 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4919
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4920 if (gtkconv->u.im->anim)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4921 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4922 conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4923 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4924
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4925 static void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4926 stop_anim(GtkObject *obj, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4927 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4928 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4929
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
4930 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4931 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4932
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4933 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4934
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4935 if (gtkconv->u.im->icon_timer != 0)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4936 g_source_remove(gtkconv->u.im->icon_timer);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4937
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4938 gtkconv->u.im->icon_timer = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4939 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4940
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4941 static gboolean
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4942 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4943 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4944 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4945 static GtkWidget *menu = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4946 GtkWidget *button;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4947
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4948 if (e->button != 3 || e->type != GDK_BUTTON_PRESS)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4949 return FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4950
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4951 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4952
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4953 /*
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4954 * If a menu already exists, destroy it before creating a new one,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4955 * thus freeing-up the memory it occupied.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4956 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4957 if (menu != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4958 gtk_widget_destroy(menu);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4959
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4960 menu = gtk_menu_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4961
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4962 if (gtkconv->u.im->icon_timer) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4963 button = gtk_menu_item_new_with_label(_("Disable Animation"));
5314
1f901484599d [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
4964 g_signal_connect(G_OBJECT(button), "activate",
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4965 G_CALLBACK(stop_anim), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4966 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4967 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4968 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4969 else if (gtkconv->u.im->anim &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4970 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4971 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4972 button = gtk_menu_item_new_with_label(_("Enable Animation"));
5314
1f901484599d [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
4973 g_signal_connect(G_OBJECT(button), "activate",
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4974 G_CALLBACK(start_anim), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4975 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4976 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4977 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4978
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4979 button = gtk_menu_item_new_with_label(_("Hide Icon"));
5314
1f901484599d [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
4980 g_signal_connect_swapped(G_OBJECT(button), "activate",
4515
9b9737a00a96 [gaim-migrate @ 4793]
Christian Hammond <chipx86@chipx86.com>
parents: 4513
diff changeset
4981 G_CALLBACK(remove_icon), gtkconv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4982 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4983 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4984
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4985 button = gtk_menu_item_new_with_label(_("Save Icon As..."));
5314
1f901484599d [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
4986 g_signal_connect(G_OBJECT(button), "activate",
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4987 G_CALLBACK(gaim_gtk_save_icon_dialog), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4988 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4989 gtk_widget_show(button);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4990
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4991 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4992
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4993 return TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4994 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4995
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4996 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4997 gaim_gtkconv_update_buddy_icon(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4998 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
4999 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5000
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5001 char filename[256];
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5002 FILE *file;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5003 GError *err = NULL;
5462
8355eeeb52a3 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5004 gboolean animate = TRUE;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5005
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5006 struct buddy *buddy;
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5007
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5008 void *data;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5009 int len, delay;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5010
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5011 GdkPixbuf *buf;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5012
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5013 GtkWidget *event;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5014 GtkWidget *frame;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5015 GdkPixbuf *scale;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5016 GdkPixmap *pm;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5017 GdkBitmap *bm;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5018 int sf = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5019
5678
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5020 g_return_if_fail(conv != NULL);
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5021 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv));
619bca773b2e [gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
5022 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5023
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5024 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5025
5462
8355eeeb52a3 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5026 if (gtkconv->u.im->icon_timer == 0 && gtkconv->u.im->icon != NULL)
8355eeeb52a3 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5027 animate = FALSE;
8355eeeb52a3 [gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5028
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5029 remove_icon(gtkconv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5030
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5031 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5032 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5033
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5034 if (gaim_conversation_get_gc(conv) == NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5035 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5036
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5037 if(gtkconv->u.im->anim)
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5038 g_object_unref(G_OBJECT(gtkconv->u.im->anim));
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5039
4757
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5040 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv),
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5041 gaim_conversation_get_name(conv))) != NULL) {
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5042 char *file = gaim_buddy_get_setting(buddy, "buddy_icon");
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5043 if(file) {
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5044 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(file, &err);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5045 g_free(file);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5046 }
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5047 } else {
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5048 data = get_icon_data(gaim_conversation_get_gc(conv),
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5049 normalize(gaim_conversation_get_name(conv)),
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5050 &len);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5051
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5052 if (!data)
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5053 return;
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5054
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5055 /* this is such an evil hack, i don't know why i'm even considering it.
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5056 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5057 g_snprintf(filename, sizeof(filename),
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5058 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d",
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5059 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid());
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5060
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5061 if (!(file = fopen(filename, "wb")))
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5062 return;
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5063
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5064 fwrite(data, 1, len, file);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5065 fclose(file);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5066
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5067 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5068 /* make sure we remove the file as soon as possible */
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5069 unlink(filename);
c4ebe1a8484b [gaim-migrate @ 5074]
Nathan Walp <nwalp@pidgin.im>
parents: 4755
diff changeset
5070 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5071
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5072 if (err) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5073 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
5074 "Buddy icon error: %s\n", err->message);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5075 g_error_free(err);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5076 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5077
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5078
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5079 if (!gtkconv->u.im->anim)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5080 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5081
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5082 if(gtkconv->u.im->iter)
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5083 g_object_unref(G_OBJECT(gtkconv->u.im->iter));
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5084
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5085 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5086 gtkconv->u.im->iter = NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5087 delay = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5088 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5089 } else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5090 gtkconv->u.im->iter =
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5091 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5092 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5093 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5094 delay = delay / 10;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5095 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5096
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5097 sf = SCALE(gtkconv->u.im->anim);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5098 scale = gdk_pixbuf_scale_simple(buf,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5099 MAX(gdk_pixbuf_get_width(buf) * sf /
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5100 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5101 MAX(gdk_pixbuf_get_height(buf) * sf /
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5102 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5103 GDK_INTERP_NEAREST);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5104
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5105 if (delay)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5106 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5107 conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5108
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5109 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5110 g_object_unref(G_OBJECT(scale));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5111
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5112 frame = gtk_frame_new(NULL);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5113 gtk_frame_set_shadow_type(GTK_FRAME(frame),
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5114 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN));
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5115 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 5);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5116 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5117 gtk_widget_show(frame);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5118
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5119 event = gtk_event_box_new();
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5120 gtk_container_add(GTK_CONTAINER(frame), event);
5314
1f901484599d [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5228
diff changeset
5121 g_signal_connect(G_OBJECT(event), "button-press-event",
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5122 G_CALLBACK(icon_menu), conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5123 gtk_widget_show(event);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5124
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4633
diff changeset
5125 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5126 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5127 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5128 gtk_widget_show(gtkconv->u.im->icon);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5129
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5130 if (!animate ||
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5131 !gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons")) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5132 stop_anim(NULL, conv);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5133 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5134
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5135 g_object_unref(G_OBJECT(pm));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5136
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5137 if (bm)
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4792
diff changeset
5138 g_object_unref(G_OBJECT(bm));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5139 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5140
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5141 void
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5142 gaim_gtkconv_update_font_buttons(void)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5143 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5144 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5145 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5146 GaimGtkConversation *gtkconv;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5147
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5148 for (l = gaim_get_ims(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5149 conv = (GaimConversation *)l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5150
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5151 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5152 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5153
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5154 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5155
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5156 if (gtkconv->toolbar.bold != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5157 gtk_widget_set_sensitive(gtkconv->toolbar.bold,
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5158 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5159
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5160 if (gtkconv->toolbar.italic != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5161 gtk_widget_set_sensitive(gtkconv->toolbar.italic,
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5162 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5163
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5164 if (gtkconv->toolbar.underline != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5165 gtk_widget_set_sensitive(gtkconv->toolbar.underline,
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5166 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline"));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5167 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5168 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5169
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5170 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5171 gaim_gtkconv_update_font_colors(GaimConversation *conv)
4421
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
5172 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5173 GaimGtkConversation *gtkconv;
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5174
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5175 if (!GAIM_IS_GTK_CONVERSATION(conv))
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5176 return;
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5177
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5178 gtkconv = GAIM_GTK_CONVERSATION(conv);
5545
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5179
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5180 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"),
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5181 &gtkconv->fg_color);
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5182
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5183 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"),
7a64114641c3 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5484
diff changeset
5184 &gtkconv->bg_color);
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5185 }
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5186
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5187 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5188 gaim_gtkconv_update_font_face(GaimConversation *conv)
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5189 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5190 GaimGtkConversation *gtkconv;
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5191
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5192 if (!GAIM_IS_GTK_CONVERSATION(conv))
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5193 return;
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5194
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5195 gtkconv = GAIM_GTK_CONVERSATION(conv);
5551
51699de873af [gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents: 5550
diff changeset
5196
4438
2054d8429925 [gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents: 4421
diff changeset
5197 strncpy(gtkconv->fontface, fontface, 128);
4421
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
5198 }
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
5199
31834b4598eb [gaim-migrate @ 4694]
Luke Schierer <lschiere@pidgin.im>
parents: 4415
diff changeset
5200 void
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5201 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5202 {
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5203 GaimPluginProtocolInfo *prpl_info = NULL;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5204 GaimWindow *win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5205 GaimGtkWindow *gtkwin = NULL;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5206 GaimGtkConversation *gtkconv;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5551
diff changeset
5207 GaimConnection *gc;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5208
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5209 if (!GAIM_IS_GTK_CONVERSATION(conv))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5210 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5211
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5212 gc = gaim_conversation_get_gc(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5213 win = gaim_conversation_get_window(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5214 gtkconv = GAIM_GTK_CONVERSATION(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5215
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5216 if (win != NULL)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5217 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5218
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5219 if (gc == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5220 gtk_widget_set_sensitive(gtkconv->send, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5221
4365
6e96ced6fb78 [gaim-migrate @ 4631]
Christian Hammond <chipx86@chipx86.com>
parents: 4364
diff changeset
5222 if (win != NULL && gaim_window_get_active_conversation(win) == conv) {
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5223 gtk_widget_set_sensitive(gtkwin->menu.insert_link, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5224 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5225 }
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
5226 else {
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5227 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5228
4674
7ffe2b64de2d [gaim-migrate @ 4985]
Nathan Walp <nwalp@pidgin.im>
parents: 4673
diff changeset
5229 gtk_widget_set_sensitive(gtkconv->send, TRUE);
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5230
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5231 if (win != NULL)
4365
6e96ced6fb78 [gaim-migrate @ 4631]
Christian Hammond <chipx86@chipx86.com>
parents: 4364
diff changeset
5232 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
4364
fa56829b9587 [gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents: 4363
diff changeset
5233 }
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5234
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5235 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5236 if (gc == NULL) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5237 gtk_widget_set_sensitive(gtkconv->info, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5238 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5239 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5240 gtk_widget_set_sensitive(gtkconv->u.im->add, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5241
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5242 if (win != NULL &&
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5243 gaim_window_get_active_conversation(win) == conv) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5244
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5245 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5246 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5247
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5248 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5249 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5250
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5251 gtk_widget_set_sensitive(gtkconv->info,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5252 (prpl_info->get_info != NULL));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5253
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5254 gtk_widget_set_sensitive(gtkconv->toolbar.image,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5255 (prpl_info->options & OPT_PROTO_IM_IMAGE));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5256
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5257 if (win != NULL && gaim_window_get_active_conversation(win) == conv) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5258 gtk_widget_set_sensitive(gtkwin->menu.insert_image,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5259 (prpl_info->options & OPT_PROTO_IM_IMAGE));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5260 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5261
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5262 gtk_widget_set_sensitive(gtkconv->u.im->warn,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5263 (prpl_info->warn != NULL));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5264
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5265 gtk_widget_set_sensitive(gtkconv->u.im->block,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5266 (prpl_info->add_permit != NULL));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5267
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5268 update_convo_add_button(conv);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5269 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5270 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5271 if (gc == NULL) {
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5272 if (gtkconv->u.chat->whisper != NULL)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5273 gtk_widget_set_sensitive(gtkconv->u.chat->whisper, FALSE);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5274
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5275 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5276
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5277 return;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5278 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5279
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5280 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->chat_send != NULL));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5281
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5282 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5283 /* gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5284
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5285 if (gtkconv->u.chat->whisper != NULL)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5286 gtk_widget_set_sensitive(gtkconv->u.chat->whisper,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5287 (prpl_info->chat_whisper != NULL));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5288
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5289 gtk_widget_set_sensitive(gtkconv->u.chat->invite,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5204
diff changeset
5290 (prpl_info->chat_invite != NULL));
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5291 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5292 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5293
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5294 GaimWindow *
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5295 gaim_gtkwin_get_at_xy(int x, int y)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5296 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5297 GaimWindow *win = NULL;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5298 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5299 GdkWindow *gdkwin;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5300 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5301
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5302 gdkwin = gdk_window_at_pointer(&x, &y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5303
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5304 if (gdkwin)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5305 gdkwin = gdk_window_get_toplevel(gdkwin);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5306
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5307 for (l = gaim_get_windows(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5308 win = (GaimWindow *)l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5309
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5310 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5311 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5312
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5313 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5314
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5315 if (gdkwin == gtkwin->window->window)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5316 return win;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5317 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5318
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5319 return NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5320 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5321
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5322 int
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5323 gaim_gtkconv_get_tab_at_xy(GaimWindow *win, int x, int y)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5324 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5325 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5326 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5327 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5328 GtkNotebook *notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5329 GtkWidget *tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5330 gint i, page_num = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5331 gboolean first_visible = TRUE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5332
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5333 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5334 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5335
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5336 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5337 notebook = GTK_NOTEBOOK(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5338
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5339 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5340 x_rel = x - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5341 y_rel = y - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5342
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5343 for (l = gaim_window_get_conversations(win), i = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5344 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5345 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5346
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5347 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5348 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5349
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5350 if (!GTK_WIDGET_MAPPED(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5351 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5352
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5353 if (first_visible) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5354 first_visible = FALSE;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5355
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5356 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5357 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5358 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5360 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5361 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5362
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5363 if (tab->allocation.x <= x_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5364 if (tab->allocation.x + tab->allocation.width <= x_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5365 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5366 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5367 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5368 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5369 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5370 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5371 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5372 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5373 if (tab->allocation.y <= y_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5374 if (tab->allocation.y + tab->allocation.height <= y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5375 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5376 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5377 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5378 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5379 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5380 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5381 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5382 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5383
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5384 if (i == gaim_window_get_conversation_count(win) + 1)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5385 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5386
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5387 return page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5388 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5389
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5390 int
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5391 gaim_gtkconv_get_dest_tab_at_xy(GaimWindow *win, int x, int y)
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5392 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5393 GaimGtkWindow *gtkwin;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5394 GList *l;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5395 gint nb_x, nb_y, x_rel, y_rel;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5396 GtkNotebook *notebook;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5397 GtkWidget *tab;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5398 gint i, page_num = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5399
4398
a8249a5250b6 [gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents: 4397
diff changeset
5400 if (!GAIM_IS_GTK_WINDOW(win))
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5401 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5402
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5403 gtkwin = GAIM_GTK_WINDOW(win);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5404 notebook = GTK_NOTEBOOK(gtkwin->notebook);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5405
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5406 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5407 x_rel = x - nb_x;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5408 y_rel = y - nb_y;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5409
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5410 for (l = gaim_window_get_conversations(win), i = 0;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5411 l != NULL;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5412 l = l->next, i++) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5413
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5414 GaimConversation *conv = l->data;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5415 tab = GAIM_GTK_CONVERSATION(conv)->tab_label;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5416
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5417 if (!GTK_WIDGET_MAPPED(tab))
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5418 continue;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5419
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5420 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP ||
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5421 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5422
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5423 if (tab->allocation.x <= x_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5424 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5425 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5426 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5427 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5428 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5429 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5430 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5431 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5432 else {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5433 if (tab->allocation.y <= y_rel) {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5434 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5435 page_num = i + 1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5436 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5437 page_num = i;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5438 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5439 else
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5440 break;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5441 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5442 }
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5443
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5444 if (i == gaim_window_get_conversation_count(win) + 1)
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5445 return -1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5446
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5447 return page_num;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5448 }
4940
3708545afe42 [gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents: 4939
diff changeset
5449
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5450 static void
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5451 close_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value,
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5452 gpointer data)
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5453 {
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5454 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5455 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5456 GaimGtkConversation *gtkconv;
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5457
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5458 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5459 conv = (GaimConversation *)l->data;
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5460
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5461 if (!GAIM_IS_GTK_CONVERSATION(conv))
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5462 continue;
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5463
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5464 gtkconv = GAIM_GTK_CONVERSATION(conv);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5465
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5466 if (value)
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5467 gtk_widget_show(gtkconv->close);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5468 else
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5469 gtk_widget_hide(gtkconv->close);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5470 }
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5471 }
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5472
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5473 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5474 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5475 gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5476 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5477 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5478 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5479 GaimGtkConversation *gtkconv;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5480
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5481 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5482 conv = (GaimConversation *)l->data;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5483
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5484 if (!GAIM_IS_GTK_CONVERSATION(conv))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5485 continue;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5486
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5487 gtkconv = GAIM_GTK_CONVERSATION(conv);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5488
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5489 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), (gboolean)value);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5490 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5491 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5492
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5493 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5494 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5495 gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5496 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5497 #ifdef USE_GTKSPELL
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5498 GList *cl;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5499 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5500 GaimGtkConversation *gtkconv;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5501 GtkSpell *spell;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5502
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5503 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5504
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5505 conv = (GaimConversation *)cl->data;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5506
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5507 if (!GAIM_IS_GTK_CONVERSATION(conv))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5508 continue;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5509
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5510 gtkconv = GAIM_GTK_CONVERSATION(conv);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5511
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5512 if (value)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5513 gtkspell_new_attach(GTK_TEXT_VIEW(gtkconv->entry), NULL, NULL);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5514 else {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5515 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry));
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5516 gtkspell_detach(spell);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5517 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5518 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5519 #endif
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5520 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5521
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5522 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5523 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5524 gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5525 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5526 GList *cl;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5527 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5528 GaimGtkConversation *gtkconv;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5529
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5530 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5531 conv = (GaimConversation *)cl->data;
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5532
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5533 if (!GAIM_IS_GTK_CONVERSATION(conv))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5534 continue;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5535
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5536 gtkconv = GAIM_GTK_CONVERSATION(conv);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5537
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5538 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->imhtml), (gboolean)value);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5539 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5540 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5541
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5542 static void
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5543 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5544 gpointer data)
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5545 {
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5546 GList *l;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5547 GtkPositionType pos;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5548 GaimWindow *win;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5549 GaimGtkWindow *gtkwin;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5550
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5551 pos = GPOINTER_TO_INT(value);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5552
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5553 for (l = gaim_get_windows(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5554 win = (GaimWindow *)l->data;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5555
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5556 if (!GAIM_IS_GTK_WINDOW(win))
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5557 continue;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5558
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5559 gtkwin = GAIM_GTK_WINDOW(win);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5560
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5561 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5562 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5563 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5564
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5565 static void
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5566 im_button_type_pref_cb(const char *name, GaimPrefType type,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5567 gpointer value, gpointer data)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5568 {
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5569 GList *l;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5570 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5571 GaimGtkConversation *gtkconv;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5572
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5573 for (l = gaim_get_ims(); l != NULL; l = l->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5574 conv = (GaimConversation *)l->data;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5575 gtkconv = GAIM_GTK_CONVERSATION(conv);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5576
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5577 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send));
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5578 }
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5579 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5580
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5581 static void
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5582 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type,
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5583 gpointer value, gpointer data)
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5584 {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5585 GList *l;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5586
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5587 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5588 return;
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5589
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5590 if (value) {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5591 for (l = gaim_get_ims(); l != NULL; l = l->next)
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5592 start_anim(NULL, (GaimConversation *)l->data);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5593 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5594 else {
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5595 for (l = gaim_get_ims(); l != NULL; l = l->next)
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5596 stop_anim(NULL, (GaimConversation *)l->data);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5597 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5598 }
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5599
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5600 static void
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5601 show_buddy_icons_pref_cb(const char *name, GaimPrefType type, gpointer value,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5602 gpointer data)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5603 {
5881
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5604 GList *l;
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5605
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5606 for (l = gaim_get_conversations(); l != NULL; l = l->next) {
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5607 GaimConversation *conv = l->data;
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5608
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5609 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5610 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon);
cc7870e1e3b3 [gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
5611 }
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5612 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5613
5681
46d7ad0dfa26 [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5680
diff changeset
5614 static void
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5615 chat_button_type_pref_cb(const char *name, GaimPrefType type, gpointer value,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5616 gpointer data)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5617 {
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5618 GList *l;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5619 GaimConnection *g;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5620 GtkWidget *parent;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5621 GaimConversationType conv_type = GAIM_CONV_CHAT;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5622 GSList *bcs;
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5623 GaimConversation *conv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5624 GaimGtkConversation *gtkconv;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5625 GaimGtkWindow *gtkwin;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5626
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5627 for (l = gaim_connections_get_all(); l != NULL; l = l->next) {
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5628
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5629 g = (GaimConnection *)l->data;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5630
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5631 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5675
diff changeset
5632 conv = (GaimConversation *)bcs->data;
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5633
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5634 if (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT)
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5635 continue;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5636
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5637 if (!GAIM_IS_GTK_CONVERSATION(conv))
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5638 continue;
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5639
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5640 gtkconv = GAIM_GTK_CONVERSATION(conv);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5641 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv));
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5642 parent = gtk_widget_get_parent(gtkconv->send);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5643
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5644 gtkconv->send =
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5645 gaim_gtk_change_text(_("Send"),
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5646 gtkconv->send, GAIM_STOCK_SEND, conv_type);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5647 gtkconv->u.chat->invite =
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5648 gaim_gtk_change_text(_("Invite"),
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5649 gtkconv->u.chat->invite,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5650 GAIM_STOCK_INVITE, conv_type);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5651
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5652 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5653 conv_type);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5654 gtk_box_pack_end(GTK_BOX(parent), gtkconv->u.chat->invite,
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5655 FALSE, FALSE, 0);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5656
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5657 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->send, 0);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5658
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5659 g_signal_connect(G_OBJECT(gtkconv->send), "clicked",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5660 G_CALLBACK(send_cb), conv);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5661 g_signal_connect(G_OBJECT(gtkconv->u.chat->invite), "clicked",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5662 G_CALLBACK(invite_cb), conv);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5663
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5664 gtk_button_set_relief(GTK_BUTTON(gtkconv->send),
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5665 GTK_RELIEF_NONE);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5666 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.chat->invite),
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5667 GTK_RELIEF_NONE);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5668
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5669 gaim_gtkconv_update_buttons_by_protocol(conv);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5670 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5671 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5672 }
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5673
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5674 void
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5675 gaim_gtk_conversation_init(void)
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5676 {
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5677 /* Conversations */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5678 gaim_prefs_add_none("/gaim/gtk/conversations");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5679 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5680 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5681 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5682 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5683 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_w_closes", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5684 gaim_prefs_add_bool("/gaim/gtk/conversations/f2_toggles_timestamps", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5685 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5686 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5687 gaim_prefs_add_bool("/gaim/gtk/conversations/send_strikethrough", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5688 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5689 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5690 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5691 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5692 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5693 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5694 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5695 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5696 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5697 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5698 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5699 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5700 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5701 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE);
5743
af159a5bbaa0 [gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
5702 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5703 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5704 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5705 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", "");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5706 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5707 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5708 gaim_prefs_add_int("/gaim/gtk/conversations/tab_side", GTK_POS_TOP);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5709
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5710 /* Conversations -> Chat */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5711 gaim_prefs_add_none("/gaim/gtk/conversations/chat");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5712 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type",
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5713 GAIM_BUTTON_TEXT_IMAGE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5714 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5715 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/old_tab_complete", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5716 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/raise_on_events", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5717 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5718 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5719 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5720 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5721
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5722 /* Conversations -> IM */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5723 gaim_prefs_add_none("/gaim/gtk/conversations/im");
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5724 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type",
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5725 GAIM_BUTTON_TEXT_IMAGE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5726 gaim_prefs_add_bool("/gaim/gtk/conversations/im/animate_buddy_icons", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5727 gaim_prefs_add_bool("/gaim/gtk/conversations/im/hide_on_send", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5728 gaim_prefs_add_bool("/gaim/gtk/conversations/im/raise_on_events", FALSE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5729 gaim_prefs_add_bool("/gaim/gtk/conversations/im/show_buddy_icons", TRUE);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5730 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5731 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5732 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50);
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5733
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5734 /* Connect callbacks. */
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5735 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs",
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5736 close_on_tabs_pref_cb, NULL);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5737 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5738 show_smileys_pref_cb, NULL);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5739 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5740 show_timestamps_pref_cb, NULL);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5741 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5742 spellcheck_pref_cb, NULL);
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5743 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5744 tab_side_pref_cb, NULL);
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5745
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5746
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5747 /* IM callbacks */
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5748 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5749 im_button_type_pref_cb, NULL);
5674
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5750 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5751 animate_buddy_icons_pref_cb, NULL);
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5752 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons",
2d86a5fa6fef [gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents: 5673
diff changeset
5753 show_buddy_icons_pref_cb, NULL);
5675
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5754
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5755
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5756 /* Chat callbacks */
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5757 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type",
17e345ffeddb [gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
5758 chat_button_type_pref_cb, NULL);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5629
diff changeset
5759 }