Mercurial > pidgin.yaz
annotate src/gtkconv.c @ 8319:a2c5537a814b
[gaim-migrate @ 9043]
This fixes the symbol collision, incorrect data types, lack of casting,
unused variables, and comments inside comments that were preventing the new
toolbar code from compiling in some cases here.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Mon, 23 Feb 2004 22:13:43 +0000 |
parents | 6f549c1d0829 |
children | 9dd7c75ed433 |
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 | 4 * |
8046 | 5 * Gaim is the legal property of its developers, whose names are too numerous |
6 * to list here. Please refer to the COPYRIGHT file distributed with this | |
7 * source distribution. | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
8 * |
4359 | 9 * This program is free software; you can redistribute it and/or modify |
10 * it under the terms of the GNU General Public License as published by | |
11 * the Free Software Foundation; either version 2 of the License, or | |
12 * (at your option) any later version. | |
13 * | |
14 * This program is distributed in the hope that it will be useful, | |
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 * GNU General Public License for more details. | |
18 * | |
19 * You should have received a copy of the GNU General Public License | |
20 * along with this program; if not, write to the Free Software | |
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
22 * | |
23 */ | |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
24 #include "gtkinternal.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
25 |
4359 | 26 #ifndef _WIN32 |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
27 # include <X11/Xlib.h> |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
28 #endif |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
29 |
4359 | 30 #ifdef USE_GTKSPELL |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
31 # include <gtkspell/gtkspell.h> |
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
32 # ifdef _WIN32 |
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
33 # include "wspell.h" |
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
34 # endif |
4359 | 35 #endif |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
36 |
4359 | 37 #include <gdk/gdkkeysyms.h> |
6982 | 38 #include <locale.h> |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
39 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
40 #include "debug.h" |
6982 | 41 #include "imgstore.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
42 #include "log.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
43 #include "multi.h" |
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
44 #include "notify.h" |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
45 #include "prefs.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
46 #include "prpl.h" |
6038 | 47 #include "request.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
48 #include "sound.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
49 #include "util.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
50 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
51 #include "dnd-hints.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
52 #include "gtkblist.h" |
5717 | 53 #include "gtkconv.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
54 #include "gtkimhtml.h" |
8317 | 55 #include "gtkimhtmltoolbar.h" |
7431 | 56 #include "gtklog.h" |
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
57 #include "gtkpounce.h" |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
58 #include "gtkprivacy.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
59 #include "gtkutils.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
60 #include "stock.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
61 |
5717 | 62 #include "ui.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
63 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
64 /* XXX */ |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
65 #include "gaim.h" |
4359 | 66 |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
67 #define AUTO_RESPONSE "<AUTO-REPLY> : " |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
68 |
7990 | 69 #define SEND_COLOR "#16569E" |
7855 | 70 #define RECV_COLOR "#A82F2F" |
7854 | 71 |
4359 | 72 static char nick_colors[][8] = { |
73 "#ba55d3", /* Medium Orchid */ | |
74 "#ee82ee", /* Violet */ | |
75 "#c715b4", /* Medium Violet Red */ | |
76 "#ff69b4", /* Hot Pink */ | |
77 "#ff6347", /* Tomato */ | |
78 "#fa8c00", /* Dark Orange */ | |
79 "#fa8072", /* Salmon */ | |
80 "#b22222", /* Fire Brick */ | |
81 "#f4a460", /* Sandy Brown */ | |
82 "#cd5c5c", /* Indian Red */ | |
83 "#bc8f8f", /* Rosy Brown */ | |
84 "#f0e68c", /* Khaki */ | |
85 "#bdb76b", /* Dark Khaki */ | |
86 "#228b22", /* Forest Green */ | |
87 "#9acd32", /* Yellow Green */ | |
88 "#32cd32", /* Lime Green */ | |
7755 | 89 "#3cb371", /* Medium Sea Green (Medium Sea Green?! What are we women?!) */ |
4359 | 90 "#2e8b57", /* Sea Green */ |
91 "#8fbc8f", /* Dark Sea Green */ | |
92 "#66cdaa", /* Medium Aquamarine */ | |
93 "#5f9ea0", /* Cadet Blue */ | |
94 "#48d1cc", /* Medium Turquoise */ | |
95 "#00ced1", /* Dark Turquoise */ | |
96 "#4682b4", /* Stell Blue */ | |
97 "#00bfff", /* Deep Sky Blue */ | |
98 "#1690ff", /* Dodger Blue */ | |
99 "#4169ff", /* Royal Blue */ | |
100 "#6a5acd", /* Slate Blue */ | |
101 "#6495ed", /* Cornflower Blue */ | |
102 "#708090", /* Slate gray */ | |
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
103 "#2f4f4f", /* Dark Slate Gray */ |
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
104 "#ff8c00", /* Dark Orange */ |
4359 | 105 }; |
6291 | 106 |
4359 | 107 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors)) |
108 | |
109 #define SCALE(x) \ | |
110 ((gdk_pixbuf_animation_get_width(x) <= 48 && \ | |
111 gdk_pixbuf_animation_get_height(x) <= 48) ? 48 : 50) | |
112 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
113 typedef struct |
4359 | 114 { |
115 GtkWidget *window; | |
116 | |
117 GtkWidget *entry; | |
118 GtkWidget *message; | |
119 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
120 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
121 |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
122 } InviteBuddyInfo; |
4359 | 123 |
124 static GtkWidget *invite_dialog = NULL; | |
125 | |
126 /* Prototypes. <-- because Paco-Paco hates this comment. */ | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
127 static void got_typing_keypress(GaimConversation *conv, gboolean first); |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
128 static GList *generate_invite_user_names(GaimConnection *gc); |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
129 static void add_chat_buddy_common(GaimConversation *conv, |
4359 | 130 const char *name, int pos); |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
131 static void tab_complete(GaimConversation *conv); |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
132 static void update_typing_icon(GaimConversation *conv); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
133 static gboolean update_send_as_selection(GaimConvWindow *win); |
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
134 static char *item_factory_translate_func (const char *path, gpointer func_data); |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
135 static void save_convo(GtkWidget *save, GaimConversation *c); |
4359 | 136 |
137 /************************************************************************** | |
138 * Callbacks | |
139 **************************************************************************/ | |
140 static void | |
6038 | 141 do_save_convo(GtkWidget *wid) |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
142 { |
6039 | 143 GaimConversation *c = g_object_get_data(G_OBJECT(GTK_FILE_SELECTION(wid)->ok_button), |
6038 | 144 "gaim_conversation"); |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
145 const char *filename; |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
146 FILE *fp; |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
147 |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
148 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); |
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 if (!((gaim_conversation_get_type(c) != GAIM_CONV_CHAT && |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
151 g_list_find(gaim_get_ims(), c)) || |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
152 (gaim_conversation_get_type(c) == GAIM_CONV_CHAT && |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
153 g_list_find(gaim_get_chats(), c)))) |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
154 filename = NULL; |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
155 |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
156 gtk_widget_destroy(wid); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
157 |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
158 if (filename == NULL) |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
159 return; |
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 if ((fp = fopen(filename, "w+")) == NULL) |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
162 return; |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
163 |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
164 fprintf(fp, "%s", c->history->str); |
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 fclose(fp); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
167 } |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
168 |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
169 static void |
6038 | 170 do_check_save_convo(GObject *obj, GtkWidget *wid) |
171 { | |
172 const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); | |
173 | |
174 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid))) | |
175 return; | |
176 | |
177 if(g_file_test(filename, G_FILE_TEST_EXISTS)){ | |
178 gaim_request_yes_no(NULL, NULL, _("That file already exists"), | |
179 _("Would you like to overwrite it?"), 1, wid, | |
180 G_CALLBACK(do_save_convo), NULL); | |
181 } | |
182 else | |
183 do_save_convo(wid); | |
184 } | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
185 |
4359 | 186 |
187 static gint | |
188 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d) | |
189 { | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
190 GaimConvWindow *win = (GaimConvWindow *)d; |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
191 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
192 gaim_conv_window_destroy(win); |
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
193 |
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
194 return TRUE; |
4359 | 195 } |
196 | |
197 static gint | |
198 close_conv_cb(GtkWidget *w, gpointer d) | |
199 { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
200 GaimConversation *conv = (GaimConversation *)d; |
4359 | 201 |
202 gaim_conversation_destroy(conv); | |
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
203 |
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
204 return TRUE; |
4359 | 205 } |
206 | |
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
207 /* Courtesy of Galeon! */ |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
208 static void |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
209 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state) |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
210 { |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
211 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE) |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
212 gtk_widget_set_state(widget, GTK_STATE_NORMAL); |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
213 } |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
214 |
8061 | 215 static void default_formatize(GaimConversation *conv) { |
216 GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv); | |
217 GaimConnection *gc = gaim_conversation_get_gc(conv); | |
218 | |
219 if (gc && gc->flags & GAIM_CONNECTION_HTML) { | |
220 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) { | |
221 gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry)); | |
222 } | |
223 | |
224 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) { | |
225 gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry)); | |
226 } | |
227 | |
228 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) { | |
229 gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry)); | |
230 } | |
231 | |
232 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_strikethrough")) { | |
233 /* Tell me noone uses <s> by default ... maybe I won't do | |
234 _toggle_strikethrough and not let them */ | |
235 /* g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf); | |
236 strcpy(buf, buf2); */ | |
237 } | |
238 | |
239 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") || c->has_font) { | |
240 gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry), c->fontface); | |
241 } | |
242 | |
243 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) { | |
244 gtk_imhtml_font_set_size(GTK_IMHTML(c->entry), gaim_prefs_get_int("/gaim/gtk/conversations/font_size")); | |
245 } | |
246 | |
247 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) { | |
248 char *color = g_strdup_printf("#%02x%02x%02x", | |
249 c->fg_color.red / 256, | |
250 c->fg_color.green / 256, | |
251 c->fg_color.blue / 256); | |
252 gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color); | |
253 g_free(color); | |
254 } | |
255 | |
256 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) && gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) { | |
257 char *color = g_strdup_printf("#%02x%02x%02x", | |
258 c->bg_color.red / 256, | |
259 c->bg_color.green / 256, | |
260 c->bg_color.blue / 256); | |
261 gtk_imhtml_toggle_backcolor(GTK_IMHTML(c->entry), color); | |
262 g_free(color); | |
263 } | |
264 } | |
265 } | |
266 | |
4359 | 267 static void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
268 send_cb(GtkWidget *widget, GaimConversation *conv) |
4359 | 269 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
270 GaimGtkConversation *gtkconv; |
8061 | 271 char *buf; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
272 GaimConnection *gc = gaim_conversation_get_gc(conv); |
4359 | 273 |
274 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
8061 | 275 |
276 if (gc && gc->flags & GAIM_CONNECTION_HTML) | |
277 buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); | |
278 else | |
279 buf = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry)); | |
280 | |
281 /* set_toggle(gtkconv->toolbar.bold, FALSE); | |
4685 | 282 set_toggle(gtkconv->toolbar.italic, FALSE); |
283 set_toggle(gtkconv->toolbar.underline, FALSE); | |
5049 | 284 set_toggle(gtkconv->toolbar.larger_size, FALSE); |
4685 | 285 set_toggle(gtkconv->toolbar.normal_size, FALSE); |
5049 | 286 set_toggle(gtkconv->toolbar.smaller_size,FALSE); |
4685 | 287 set_toggle(gtkconv->toolbar.font, FALSE); |
288 set_toggle(gtkconv->toolbar.fgcolor, FALSE); | |
289 set_toggle(gtkconv->toolbar.bgcolor, FALSE); | |
290 set_toggle(gtkconv->toolbar.link, FALSE); | |
8061 | 291 */ |
4359 | 292 gtk_widget_grab_focus(gtkconv->entry); |
293 | |
294 if (strlen(buf) == 0) { | |
295 g_free(buf); | |
296 | |
297 return; | |
298 } | |
299 | |
300 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
301 gaim_conv_im_send(GAIM_CONV_IM(conv), buf); |
8061 | 302 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
303 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf); |
4359 | 304 |
5629 | 305 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send")) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
306 gaim_conv_window_hide(gaim_conversation_get_window(conv)); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
307 |
4359 | 308 g_free(buf); |
309 | |
8061 | 310 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
311 default_formatize(conv); | |
4359 | 312 } |
313 | |
314 static void | |
7928 | 315 add_remove_cb(GtkWidget *widget, GaimConversation *conv) |
4359 | 316 { |
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
317 GaimAccount *account; |
4359 | 318 const char *name; |
319 | |
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
320 account = gaim_conversation_get_account(conv); |
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
321 name = gaim_conversation_get_name(conv); |
7879 | 322 |
323 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
7859 | 324 GaimBuddy *b; |
325 | |
326 b = gaim_find_buddy(account, name); | |
327 if (b != NULL) | |
328 show_confirm_del(b); | |
329 else if (account != NULL && gaim_account_is_connected(account)) | |
330 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL); | |
7879 | 331 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
7859 | 332 GaimChat *c; |
333 | |
334 c = gaim_blist_find_chat(account, name); | |
335 if (c != NULL) | |
336 show_confirm_del_blist_chat(c); | |
337 else if (account != NULL && gaim_account_is_connected(account)) | |
338 gaim_blist_request_add_chat(account, NULL, NULL); | |
339 } | |
4359 | 340 |
341 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
342 } | |
343 | |
7975 | 344 static void chat_do_info(GaimConversation *conv, const char *who) |
345 { | |
346 GaimPluginProtocolInfo *prpl_info = NULL; | |
347 GaimConnection *gc; | |
348 | |
349 if ((gc = gaim_conversation_get_gc(conv))) { | |
350 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
351 | |
352 /* | |
353 * If there are special needs for getting info on users in | |
354 * buddy chat "rooms"... | |
355 */ | |
356 if (prpl_info->get_cb_info != NULL) | |
357 prpl_info->get_cb_info(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); | |
358 else | |
359 prpl_info->get_info(gc, who); | |
360 } | |
361 } | |
362 | |
363 | |
4359 | 364 static void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
365 info_cb(GtkWidget *widget, GaimConversation *conv) |
4359 | 366 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
367 GaimGtkConversation *gtkconv; |
4359 | 368 |
369 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
370 | |
7879 | 371 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
372 serv_get_info(gaim_conversation_get_gc(conv), | |
373 gaim_conversation_get_name(conv)); | |
374 | |
375 gtk_widget_grab_focus(gtkconv->entry); | |
376 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
377 /* Get info of the person currently selected in the GtkTreeView */ | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
378 GaimGtkChatPane *gtkchat; |
4359 | 379 GtkTreeIter iter; |
380 GtkTreeModel *model; | |
381 GtkTreeSelection *sel; | |
382 const char *name; | |
383 | |
384 gtkchat = gtkconv->u.chat; | |
385 | |
386 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
387 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
388 | |
389 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
390 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1); | |
391 else | |
392 return; | |
393 | |
7975 | 394 chat_do_info(conv, name); |
4359 | 395 } |
396 } | |
397 | |
398 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
399 warn_cb(GtkWidget *widget, GaimConversation *conv) |
4359 | 400 { |
401 show_warn_dialog(gaim_conversation_get_gc(conv), | |
7879 | 402 gaim_conversation_get_name(conv)); |
4359 | 403 |
404 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
405 } | |
406 | |
407 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
408 block_cb(GtkWidget *widget, GaimConversation *conv) |
4359 | 409 { |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
410 GaimAccount *account; |
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
411 |
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
412 account = gaim_conversation_get_account(conv); |
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
413 |
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
414 if (account != NULL && gaim_account_is_connected(account)) |
6399
d726a36628e8
[gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents:
6398
diff
changeset
|
415 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv)); |
4359 | 416 |
417 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
418 } | |
419 | |
420 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
421 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info) |
4359 | 422 { |
423 const char *buddy, *message; | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
424 GaimGtkConversation *gtkconv; |
4359 | 425 |
426 gtkconv = GAIM_GTK_CONVERSATION(info->conv); | |
427 | |
428 if (resp == GTK_RESPONSE_OK) { | |
429 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry)); | |
430 message = gtk_entry_get_text(GTK_ENTRY(info->message)); | |
431 | |
4793 | 432 if (!g_ascii_strcasecmp(buddy, "")) { |
4359 | 433 g_free(info); |
434 | |
435 return; | |
436 } | |
437 | |
438 serv_chat_invite(gaim_conversation_get_gc(info->conv), | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
439 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)), |
4359 | 440 message, buddy); |
441 } | |
442 | |
443 gtk_widget_destroy(invite_dialog); | |
444 invite_dialog = NULL; | |
445 | |
446 g_free(info); | |
447 } | |
448 | |
449 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
450 invite_cb(GtkWidget *widget, GaimConversation *conv) |
4359 | 451 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
452 InviteBuddyInfo *info = NULL; |
4359 | 453 |
454 if (invite_dialog == NULL) { | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
455 GaimConnection *gc; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
456 GaimConvWindow *win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
457 GaimGtkWindow *gtkwin; |
4359 | 458 GtkWidget *label; |
459 GtkWidget *vbox, *hbox; | |
460 GtkWidget *table; | |
461 GtkWidget *img; | |
462 | |
5024 | 463 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); |
4359 | 464 |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
465 info = g_new0(InviteBuddyInfo, 1); |
4359 | 466 info->conv = conv; |
467 | |
468 gc = gaim_conversation_get_gc(conv); | |
469 win = gaim_conversation_get_window(conv); | |
470 gtkwin = GAIM_GTK_WINDOW(win); | |
471 | |
472 /* Create the new dialog. */ | |
473 invite_dialog = gtk_dialog_new_with_buttons( | |
7859 | 474 _("Invite Buddy Into Chat Room"), |
7879 | 475 GTK_WINDOW(gtkwin->window), 0, |
476 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
4359 | 477 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); |
478 | |
479 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog), | |
480 GTK_RESPONSE_OK); | |
481 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6); | |
482 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE); | |
483 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE); | |
484 | |
485 /* Setup the outside spacing. */ | |
486 vbox = GTK_DIALOG(invite_dialog)->vbox; | |
487 | |
488 gtk_box_set_spacing(GTK_BOX(vbox), 12); | |
489 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); | |
490 | |
491 /* Setup the inner hbox and put the dialog's icon in it. */ | |
492 hbox = gtk_hbox_new(FALSE, 12); | |
493 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
494 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
495 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
496 | |
497 /* Setup the right vbox. */ | |
498 vbox = gtk_vbox_new(FALSE, 0); | |
499 gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
500 | |
501 /* Put our happy label in it. */ | |
502 label = gtk_label_new(_("Please enter the name of the user you wish " | |
503 "to invite, along with an optional invite " | |
504 "message.")); | |
505 gtk_widget_set_size_request(label, 350, -1); | |
506 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
507 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
508 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
509 | |
510 /* hbox for the table, and to give it some spacing on the left. */ | |
511 hbox = gtk_hbox_new(FALSE, 6); | |
512 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
513 | |
514 /* Setup the table we're going to use to lay stuff out. */ | |
515 table = gtk_table_new(2, 2, FALSE); | |
516 gtk_table_set_row_spacings(GTK_TABLE(table), 6); | |
517 gtk_table_set_col_spacings(GTK_TABLE(table), 6); | |
518 gtk_container_set_border_width(GTK_CONTAINER(table), 12); | |
519 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | |
520 | |
521 /* Now the Buddy label */ | |
522 label = gtk_label_new(NULL); | |
523 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:")); | |
524 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
525 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | |
526 | |
527 /* Now the Buddy drop-down entry field. */ | |
528 info->entry = gtk_combo_new(); | |
529 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE); | |
530 gtk_entry_set_activates_default( | |
531 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE); | |
532 | |
533 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1); | |
534 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry); | |
535 | |
536 /* Fill in the names. */ | |
537 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry), | |
538 generate_invite_user_names(gc)); | |
539 | |
540 | |
541 /* Now the label for "Message" */ | |
542 label = gtk_label_new(NULL); | |
543 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:")); | |
544 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
545 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); | |
546 | |
547 | |
548 /* And finally, the Message entry field. */ | |
549 info->message = gtk_entry_new(); | |
550 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE); | |
551 | |
552 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2); | |
553 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message); | |
554 | |
555 /* Connect the signals. */ | |
556 g_signal_connect(G_OBJECT(invite_dialog), "response", | |
557 G_CALLBACK(do_invite), info); | |
558 } | |
559 | |
560 gtk_widget_show_all(invite_dialog); | |
561 | |
562 if (info != NULL) | |
563 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry); | |
564 } | |
565 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
566 static void |
7748 | 567 menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget) |
568 { | |
569 show_im_dialog(); | |
570 } | |
571 | |
572 static void | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
573 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
574 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
575 GaimConvWindow *win = (GaimConvWindow *)data; |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
576 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
577 save_convo(NULL, gaim_conv_window_get_active_conversation(win)); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
578 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
579 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
580 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
581 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
582 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
583 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
584 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
585 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
586 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
587 |
7431 | 588 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv), gaim_conversation_get_account(conv)); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
589 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
590 |
7295 | 591 struct _search { |
592 GaimGtkConversation *gtkconv; | |
593 GtkWidget *entry; | |
594 }; | |
595 | |
7929 | 596 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s) |
7295 | 597 { |
7929 | 598 switch (resp) { |
599 case GTK_RESPONSE_OK: | |
600 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), gtk_entry_get_text(GTK_ENTRY(s->entry))); | |
601 break; | |
602 | |
603 case GTK_RESPONSE_DELETE_EVENT: | |
604 case GTK_RESPONSE_CLOSE: | |
605 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); | |
606 gtk_widget_destroy(s->gtkconv->dialogs.search); | |
607 s->gtkconv->dialogs.search = NULL; | |
608 g_free(s); | |
609 break; | |
610 } | |
7295 | 611 } |
612 | |
613 static void | |
7751 | 614 menu_find_cb(gpointer data, guint action, GtkWidget *widget) |
7295 | 615 { |
616 GaimConvWindow *win = (GaimConvWindow *)data; | |
617 GaimConversation *conv = gaim_conv_window_get_active_conversation(win); | |
618 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); | |
619 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); | |
7929 | 620 GtkWidget *hbox; |
7295 | 621 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); |
7929 | 622 GtkWidget *label; |
7295 | 623 struct _search *s; |
624 | |
7798 | 625 if (gtkconv->dialogs.search) { |
626 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search)); | |
7295 | 627 return; |
7798 | 628 } |
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
629 |
7295 | 630 s = g_malloc(sizeof(struct _search)); |
631 s->gtkconv = gtkconv; | |
7929 | 632 |
633 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"), | |
634 GTK_WINDOW(gtkwin->window), GTK_DIALOG_DESTROY_WITH_PARENT, | |
635 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | |
636 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); | |
637 gtk_dialog_set_default_response(GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK); | |
638 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", | |
639 G_CALLBACK(do_search_cb), s); | |
640 | |
641 gtk_container_set_border_width(GTK_CONTAINER(gtkconv->dialogs.search), 6); | |
642 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); | |
643 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE); | |
644 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12); | |
645 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6); | |
646 | |
647 hbox = gtk_hbox_new(FALSE, 12); | |
648 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), hbox); | |
649 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
650 | |
651 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
652 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK, FALSE); | |
653 | |
654 label = gtk_label_new(NULL); | |
655 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); | |
656 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
657 | |
658 s->entry = gtk_entry_new(); | |
659 gtk_entry_set_activates_default(GTK_ENTRY(s->entry), TRUE); | |
660 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(s->entry)); | |
661 g_signal_connect(G_OBJECT(s->entry), "changed", | |
662 G_CALLBACK(gaim_gtk_set_sensitive_if_input), | |
663 gtkconv->dialogs.search); | |
664 gtk_box_pack_start(GTK_BOX(hbox), s->entry, FALSE, FALSE, 0); | |
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
665 |
7295 | 666 gtk_widget_show_all(gtkconv->dialogs.search); |
7929 | 667 gtk_widget_grab_focus(s->entry); |
7295 | 668 } |
669 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
670 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
671 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
672 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
673 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
674 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
675 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
676 conv = gaim_conv_window_get_active_conversation(win); |
5908
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 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv), |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
679 gaim_conversation_get_name(conv), NULL); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
680 } |
8317 | 681 /* |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
682 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
683 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
684 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
685 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
686 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
687 GaimGtkConversation *gtkconv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
688 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
689 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
690 gtkconv = GAIM_GTK_CONVERSATION(conv); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
691 |
7927 | 692 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link), |
693 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link))); | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
694 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
695 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
696 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
697 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
698 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
699 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
700 GaimGtkConversation *gtkconv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
701 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
702 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win)); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
703 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
704 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
705 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
706 } |
8317 | 707 */ |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
708 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
709 menu_alias_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
710 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
711 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
712 GaimConversation *conv; |
7879 | 713 GaimAccount *account; |
714 const char *name; | |
715 | |
716 conv = gaim_conv_window_get_active_conversation(win); | |
717 account = gaim_conversation_get_account(conv); | |
718 name = gaim_conversation_get_name(conv); | |
719 | |
720 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
721 GaimBuddy *b; | |
722 | |
723 b = gaim_find_buddy(account, name); | |
724 if (b != NULL) | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
725 alias_dialog_bud(b); |
7879 | 726 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
727 GaimChat *c; | |
728 | |
729 c = gaim_blist_find_chat(account, name); | |
730 if (c != NULL) | |
731 alias_dialog_blist_chat(c); | |
5908
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 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
735 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
736 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
737 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
738 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
739 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
740 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
741 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
742 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
743 info_cb(NULL, conv); |
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 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
746 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
747 menu_invite_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
748 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
749 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
750 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
751 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
752 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
753 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
754 invite_cb(NULL, conv); |
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 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
757 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
758 menu_warn_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
759 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
760 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
761 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
762 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
763 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
764 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
765 warn_cb(NULL, conv); |
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 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
768 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
769 menu_block_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
770 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
771 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
772 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
773 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
774 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
775 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
776 block_cb(NULL, conv); |
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 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
779 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
780 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
781 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
782 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
783 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
784 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
785 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
786 |
7928 | 787 add_remove_cb(NULL, conv); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
788 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
789 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
790 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
791 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
792 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
793 GaimConvWindow *win = (GaimConvWindow *)data; |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
794 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
795 close_conv_cb(NULL, gaim_conv_window_get_active_conversation(win)); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
796 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
797 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
798 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
799 menu_logging_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
800 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
801 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
802 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
803 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
804 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
805 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
806 if (conv == NULL) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
807 return; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
808 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
809 gaim_conversation_set_logging(conv, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
810 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); |
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 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
813 static void |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
814 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget) |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
815 { |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
816 GaimConvWindow *win = (GaimConvWindow *)data; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
817 GaimConversation *conv; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
818 GaimGtkConversation *gtkconv; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
819 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
820 conv = gaim_conv_window_get_active_conversation(win); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
821 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
822 if (conv == NULL) |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
823 return; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
824 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
825 gtkconv = GAIM_GTK_CONVERSATION(conv); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
826 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
827 gtkconv->show_formatting_toolbar = |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
828 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
829 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
830 if (gtkconv->show_formatting_toolbar) |
8317 | 831 gtk_widget_show(gtkconv->toolbar); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
832 else |
8317 | 833 gtk_widget_hide(gtkconv->toolbar); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
834 } |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
835 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
836 static void |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
837 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
838 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
839 GaimConvWindow *win = (GaimConvWindow *)data; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
840 GaimConversation *conv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
841 GaimGtkConversation *gtkconv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
842 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
843 conv = gaim_conv_window_get_active_conversation(win); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
844 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
845 if (!conv) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
846 return; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
847 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
848 gtkconv = GAIM_GTK_CONVERSATION(conv); |
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 gtkconv->make_sound = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
851 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
852 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
853 |
7961 | 854 static void |
855 chat_do_im(GaimConversation *conv, const char *who) | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
856 { |
7961 | 857 GaimPluginProtocolInfo *prpl_info = NULL; |
858 char *real_who; | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
859 GaimConversation *conv2; |
7961 | 860 GaimAccount *account; |
861 | |
862 account = gaim_conversation_get_account(conv); | |
863 | |
864 if(account && account->gc) | |
865 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl); | |
866 | |
867 if(prpl_info && prpl_info->get_cb_real_name) | |
868 real_who = prpl_info->get_cb_real_name(account->gc, | |
869 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); | |
870 else | |
871 real_who = g_strdup(who); | |
872 | |
873 if(!real_who) | |
874 return; | |
875 | |
876 conv2 = gaim_find_conversation_with_account(real_who, account); | |
877 | |
878 if (conv2 != NULL) | |
879 gaim_conv_window_show(gaim_conversation_get_window(conv2)); | |
880 else | |
881 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who); | |
882 | |
883 g_free(real_who); | |
884 } | |
885 | |
886 | |
887 static void | |
888 chat_im_button_cb(GtkWidget *widget, GaimConversation *conv) | |
889 { | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
890 GaimGtkConversation *gtkconv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
891 GaimGtkChatPane *gtkchat; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
892 GtkTreeIter iter; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
893 GtkTreeModel *model; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
894 GtkTreeSelection *sel; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
895 const char *name; |
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 gtkconv = GAIM_GTK_CONVERSATION(conv); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
898 gtkchat = gtkconv->u.chat; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
899 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
900 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
901 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
902 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
903 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
904 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
|
905 else |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
906 return; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
907 |
7961 | 908 chat_do_im(conv, name); |
5908
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 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
911 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
912 ignore_cb(GtkWidget *w, GaimConversation *conv) |
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 GaimGtkConversation *gtkconv; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
915 GaimGtkChatPane *gtkchat; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
916 GaimConvChat *chat; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
917 GtkTreeIter iter; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
918 GtkTreeModel *model; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
919 GtkTreeSelection *sel; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
920 const char *name; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
921 int pos; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
922 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
923 chat = GAIM_CONV_CHAT(conv); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
924 gtkconv = GAIM_GTK_CONVERSATION(conv); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
925 gtkchat = gtkconv->u.chat; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
926 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
927 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
928 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
929 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
930 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) { |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
931 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
|
932 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
933 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
934 else |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
935 return; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
936 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
937 pos = g_list_index(gaim_conv_chat_get_users(chat), name); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
938 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
939 if (gaim_conv_chat_is_user_ignored(chat, name)) |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
940 gaim_conv_chat_unignore(chat, name); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
941 else |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
942 gaim_conv_chat_ignore(chat, name); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
943 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
944 add_chat_buddy_common(conv, name, pos); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
945 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
946 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
947 static void |
7398 | 948 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv) |
949 { | |
950 const char *who = g_object_get_data(G_OBJECT(w), "user_data"); | |
951 | |
952 chat_do_im(conv, who); | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
953 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
954 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
955 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
956 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
957 { |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
958 char *who; |
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 who = g_object_get_data(G_OBJECT(w), "user_data"); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
961 |
7975 | 962 chat_do_info(conv, who); |
5908
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 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
965 static void |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
966 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
967 { |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
968 GaimPluginProtocolInfo *prpl_info = NULL; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
969 GaimConnection *gc; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
970 char *who; |
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 gc = gaim_conversation_get_gc(conv); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
973 who = g_object_get_data(G_OBJECT(w), "user_data"); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
974 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
975 if (gc != NULL) { |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
976 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
977 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
978 /* |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
979 * 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
|
980 */ |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
981 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
982 if (prpl_info->get_cb_away != NULL) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
983 prpl_info->get_cb_away(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
984 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
985 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
986 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
987 static void |
7928 | 988 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv) |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
989 { |
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
990 GaimAccount *account; |
6695 | 991 GaimBuddy *b; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
992 char *name; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
993 |
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
994 account = gaim_conversation_get_account(conv); |
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
995 name = g_object_get_data(G_OBJECT(w), "user_data"); |
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
996 b = gaim_find_buddy(account, name); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
997 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
998 if (b != NULL) |
5975 | 999 show_confirm_del(b); |
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1000 else if (account != NULL && gaim_account_is_connected(account)) |
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1001 gaim_blist_request_add_buddy(account, name, NULL, NULL); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1002 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1003 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1004 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1005 |
8143 | 1006 static GtkWidget * |
1007 create_chat_menu(GaimConversation *conv, gchar *who, | |
1008 GaimPluginProtocolInfo *prpl_info, GaimConnection *gc) | |
1009 { | |
1010 static GtkWidget *menu = NULL; | |
1011 GtkWidget *button; | |
1012 | |
1013 /* | |
1014 * If a menu already exists, destroy it before creating a new one, | |
1015 * thus freeing-up the memory it occupied. | |
1016 */ | |
1017 if (menu) | |
1018 gtk_widget_destroy(menu); | |
1019 | |
1020 menu = gtk_menu_new(); | |
1021 | |
1022 button = gtk_menu_item_new_with_label(_("IM")); | |
1023 g_signal_connect(G_OBJECT(button), "activate", | |
1024 G_CALLBACK(menu_chat_im_cb), conv); | |
1025 g_object_set_data(G_OBJECT(button), "user_data", who); | |
1026 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
1027 gtk_widget_show(button); | |
1028 | |
1029 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who)) | |
1030 button = gtk_menu_item_new_with_label(_("Un-Ignore")); | |
1031 else | |
1032 button = gtk_menu_item_new_with_label(_("Ignore")); | |
1033 | |
1034 g_signal_connect(G_OBJECT(button), "activate", | |
1035 G_CALLBACK(ignore_cb), conv); | |
1036 g_object_set_data(G_OBJECT(button), "user_data", who); | |
1037 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
1038 gtk_widget_show(button); | |
1039 | |
8170 | 1040 if (gc && (prpl_info->get_info || prpl_info->get_cb_info)) { |
8143 | 1041 button = gtk_menu_item_new_with_label(_("Info")); |
1042 g_signal_connect(G_OBJECT(button), "activate", | |
1043 G_CALLBACK(menu_chat_info_cb), conv); | |
1044 g_object_set_data(G_OBJECT(button), "user_data", who); | |
1045 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
1046 gtk_widget_show(button); | |
1047 } | |
1048 | |
1049 if (gc && prpl_info->get_cb_away) { | |
1050 button = gtk_menu_item_new_with_label(_("Get Away Msg")); | |
1051 g_signal_connect(G_OBJECT(button), "activate", | |
1052 G_CALLBACK(menu_chat_get_away_cb), conv); | |
1053 g_object_set_data(G_OBJECT(button), "user_data", who); | |
1054 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
1055 gtk_widget_show(button); | |
1056 } | |
1057 | |
8170 | 1058 /* XXX: jabber can only add buddies from here in certain circumstances */ |
8143 | 1059 /* Added by Jonas <jonas@birme.se> */ |
1060 if (gc) { | |
1061 if (gaim_find_buddy(gc->account, who)) | |
1062 button = gtk_menu_item_new_with_label(_("Remove")); | |
1063 else | |
1064 button = gtk_menu_item_new_with_label(_("Add")); | |
1065 | |
1066 g_signal_connect(G_OBJECT(button), "activate", | |
1067 G_CALLBACK(menu_chat_add_remove_cb), conv); | |
1068 | |
1069 g_object_set_data(G_OBJECT(button), "user_data", who); | |
1070 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
1071 gtk_widget_show(button); | |
1072 } | |
1073 /* End Jonas */ | |
1074 | |
1075 return menu; | |
1076 } | |
1077 | |
1078 | |
1079 static gint | |
1080 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimConversation *conv) | |
1081 { | |
1082 GaimGtkConversation *gtkconv; | |
1083 GaimPluginProtocolInfo *prpl_info = NULL; | |
1084 GaimGtkChatPane *gtkchat; | |
1085 GaimConnection *gc; | |
1086 GaimAccount *account; | |
1087 GtkTreeSelection *sel; | |
1088 GtkTreeIter iter; | |
1089 GtkTreeModel *model; | |
1090 GtkWidget *menu; | |
1091 gchar *who; | |
1092 | |
1093 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
1094 gtkchat = gtkconv->u.chat; | |
1095 account = gaim_conversation_get_account(conv); | |
1096 gc = account->gc; | |
1097 | |
1098 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
1099 | |
1100 if (gc != NULL) | |
1101 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
1102 | |
1103 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
1104 if(!gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
1105 return FALSE; | |
1106 | |
1107 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1); | |
1108 menu = create_chat_menu (conv, who, prpl_info, gc); | |
1109 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, gaim_gtk_treeview_popup_menu_position_func, widget, 0, GDK_CURRENT_TIME); | |
1110 | |
1111 return TRUE; | |
1112 } | |
1113 | |
1114 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1115 static gint |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1116 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1117 GaimConversation *conv) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1118 { |
8143 | 1119 GaimGtkConversation *gtkconv; |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1120 GaimPluginProtocolInfo *prpl_info = NULL; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1121 GaimGtkChatPane *gtkchat; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1122 GaimConnection *gc; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1123 GaimAccount *account; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1124 GtkTreePath *path; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1125 GtkTreeIter iter; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1126 GtkTreeModel *model; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1127 GtkTreeViewColumn *column; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1128 gchar *who; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1129 int x, y; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1130 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1131 gtkconv = GAIM_GTK_CONVERSATION(conv); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1132 gtkchat = gtkconv->u.chat; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1133 account = gaim_conversation_get_account(conv); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1134 gc = account->gc; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1135 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1136 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1137 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1138 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
|
1139 event->x, event->y, &path, &column, &x, &y); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1140 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1141 if (path == NULL) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1142 return FALSE; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1143 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1144 if (gc != NULL) |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1145 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1146 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1147 gtk_tree_selection_select_path(GTK_TREE_SELECTION( |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1148 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1149 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1150 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1151 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
|
1152 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1153 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { |
7398 | 1154 chat_do_im(conv, who); |
1155 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
8143 | 1156 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1157 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1158 event->button, event->time); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1159 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1160 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1161 return TRUE; |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1162 } |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1163 |
8133 | 1164 static void |
1165 move_to_next_unread_tab(GaimConversation *conv) | |
1166 { | |
1167 GaimConversation *next_conv = NULL; | |
1168 GaimConvWindow *win; | |
1169 GList *l; | |
1170 int index, i; | |
1171 | |
1172 win = gaim_conversation_get_window(conv); | |
1173 index = gaim_conversation_get_index(conv); | |
1174 | |
1175 /* First check the tabs after this position. */ | |
1176 for (l = g_list_nth(gaim_conv_window_get_conversations(win), index); | |
1177 l != NULL; | |
1178 l = l->next) { | |
1179 | |
1180 next_conv = (GaimConversation *)l->data; | |
1181 | |
1182 if (gaim_conversation_get_unseen(next_conv) > 0) | |
1183 break; | |
1184 | |
1185 next_conv = NULL; | |
1186 } | |
1187 | |
1188 if (next_conv == NULL) { | |
1189 | |
1190 /* Now check before this position. */ | |
1191 for (l = gaim_conv_window_get_conversations(win), i = 0; | |
1192 l != NULL && i < index; | |
1193 l = l->next) { | |
1194 | |
1195 next_conv = (GaimConversation *)l->data; | |
1196 | |
1197 if (gaim_conversation_get_unseen(next_conv) > 0) | |
1198 break; | |
1199 | |
1200 next_conv = NULL; | |
1201 } | |
1202 | |
1203 if (next_conv == NULL) { | |
1204 /* Okay, just grab the next conversation tab. */ | |
1205 if (index == gaim_conv_window_get_conversation_count(win) - 1) | |
1206 next_conv = gaim_conv_window_get_conversation_at(win, 0); | |
1207 else | |
1208 next_conv = gaim_conv_window_get_conversation_at(win, index + 1); | |
1209 } | |
1210 } | |
1211 | |
1212 if (next_conv != NULL && next_conv != conv) { | |
1213 gaim_conv_window_switch_conversation(win, | |
1214 gaim_conversation_get_index(next_conv)); | |
1215 } | |
1216 } | |
1217 | |
4359 | 1218 static gboolean |
8105 | 1219 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data) |
4359 | 1220 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1221 GaimConvWindow *win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1222 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1223 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1224 GaimGtkWindow *gtkwin; |
8105 | 1225 int numconvs; |
1226 int curconv; | |
1227 | |
1228 conv = (GaimConversation *)data; | |
1229 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
1230 win = gaim_conversation_get_window(conv); | |
1231 gtkwin = GAIM_GTK_WINDOW(win); | |
1232 numconvs = gaim_conv_window_get_conversation_count(win); | |
1233 curconv = gaim_conversation_get_index(conv); | |
1234 | |
1235 /* If CTRL was held down... */ | |
1236 if (event->state & GDK_CONTROL_MASK) { | |
4359 | 1237 switch (event->keyval) { |
8105 | 1238 case GDK_Return: |
1239 case GDK_KP_Enter: | |
1240 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ctrl_enter_sends")) { | |
1241 send_cb(NULL, conv); | |
1242 | |
1243 return TRUE; | |
1244 } | |
1245 break; | |
1246 | |
4359 | 1247 case GDK_Up: |
1248 if (!conv->send_history) | |
1249 break; | |
1250 | |
1251 if (!conv->send_history->prev) { | |
1252 GtkTextIter start, end; | |
1253 | |
1254 if (conv->send_history->data) | |
1255 g_free(conv->send_history->data); | |
1256 | |
1257 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
1258 &start); | |
1259 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end); | |
1260 | |
1261 conv->send_history->data = | |
1262 gtk_text_buffer_get_text(gtkconv->entry_buffer, | |
1263 &start, &end, FALSE); | |
1264 } | |
1265 | |
1266 if (conv->send_history->next && | |
1267 conv->send_history->next->data) { | |
1268 | |
1269 conv->send_history = conv->send_history->next; | |
8061 | 1270 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
1271 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->entry), conv->send_history->data, 0, NULL); | |
4359 | 1272 } |
1273 | |
8105 | 1274 return TRUE; |
4359 | 1275 break; |
1276 | |
1277 case GDK_Down: | |
1278 if (!conv->send_history) | |
1279 break; | |
1280 | |
8105 | 1281 if (conv->send_history->prev && |
1282 conv->send_history->prev->data) { | |
1283 | |
4359 | 1284 conv->send_history = conv->send_history->prev; |
8105 | 1285 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
1286 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->entry), conv->send_history->data, 0, NULL); | |
4359 | 1287 } |
1288 | |
8105 | 1289 return TRUE; |
4359 | 1290 break; |
8105 | 1291 |
8108 | 1292 case GDK_Page_Down: |
8143 | 1293 case ']': |
1294 gaim_conv_window_switch_conversation(win, (curconv + 1) % numconvs); | |
8105 | 1295 |
1296 return TRUE; | |
1297 break; | |
1298 | |
8108 | 1299 case GDK_Page_Up: |
8143 | 1300 case '[': |
1301 gaim_conv_window_switch_conversation(win, (curconv + numconvs - 1) % numconvs); | |
8133 | 1302 |
1303 return TRUE; | |
1304 break; | |
1305 | |
8108 | 1306 case GDK_Tab: |
8133 | 1307 move_to_next_unread_tab(conv); |
8108 | 1308 |
1309 return TRUE; | |
1310 break; | |
1311 | |
1312 case 'l': | |
1313 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); | |
1314 g_string_free(conv->history, TRUE); | |
8229 | 1315 conv->history = NULL; |
8108 | 1316 |
1317 return TRUE; | |
1318 break; | |
1319 | |
1320 case 'z': | |
1321 gtk_window_iconify(GTK_WINDOW(gtkwin->window)); | |
8105 | 1322 |
1323 return TRUE; | |
1324 break; | |
1325 | |
1326 } /* End of switch */ | |
4359 | 1327 |
8317 | 1328 /* if (gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")) { |
4359 | 1329 switch (event->keyval) { |
8317 | 1330 |
1331 | |
4359 | 1332 } |
8317 | 1333 } */ /* End of switch */ |
1334 | |
1335 /* if (gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")) { | |
4359 | 1336 char buf[7]; |
1337 | |
1338 *buf = '\0'; | |
1339 | |
1340 switch (event->keyval) { | |
8317 | 1341 |
4359 | 1342 } |
1343 | |
8317 | 1344 |
1345 }*/ | |
4359 | 1346 |
8108 | 1347 } else |
8105 | 1348 |
1349 /* If ALT (or whatever) was held down... */ | |
1350 if (event->state & GDK_MOD1_MASK) { | |
1351 /* XXX - Make sure the conv exists befeore switching to it */ | |
1352 if (event->keyval > '0' && event->keyval <= '9') { | |
1353 int switchto = event->keyval - '1'; | |
1354 if (switchto < numconvs) | |
1355 gaim_conv_window_switch_conversation(win, switchto); | |
4359 | 1356 |
1357 return TRUE; | |
1358 } | |
8108 | 1359 } else |
8105 | 1360 |
1361 /* If neither CTRL nor ALT were held down... */ | |
1362 switch (event->keyval) { | |
1363 case GDK_Return: | |
1364 case GDK_KP_Enter: | |
1365 if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) && | |
1366 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends")) { | |
1367 | |
1368 send_cb(NULL, conv); | |
1369 return TRUE; | |
1370 } | |
1371 break; | |
1372 | |
1373 case GDK_Tab: | |
1374 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && | |
1375 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/tab_completion")) { | |
1376 | |
1377 tab_complete(conv); | |
1378 return TRUE; | |
1379 } | |
1380 break; | |
1381 | |
1382 case GDK_Page_Up: | |
1383 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml)); | |
1384 return TRUE; | |
1385 break; | |
1386 | |
1387 case GDK_Page_Down: | |
1388 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml)); | |
1389 return TRUE; | |
1390 break; | |
1391 | |
1392 case GDK_F2: | |
1393 gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps", | |
1394 !gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); | |
1395 return TRUE; | |
1396 break; | |
1397 | |
1398 } /* End of switch */ | |
4359 | 1399 |
1400 return FALSE; | |
1401 } | |
1402 | |
1403 /* | |
1404 * NOTE: | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1405 * This guy just kills a single right click from being propagated any |
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1406 * further. I have no idea *why* we need this, but we do ... It |
4359 | 1407 * prevents right clicks on the GtkTextView in a convo dialog from |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1408 * going all the way down to the notebook. I suspect a bug in |
4359 | 1409 * GtkTextView, but I'm not ready to point any fingers yet. |
1410 */ | |
1411 static gboolean | |
1412 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) | |
1413 { | |
1414 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
1415 /* Right single click */ | |
1416 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event"); | |
1417 | |
1418 return TRUE; | |
1419 } | |
1420 | |
1421 return FALSE; | |
1422 } | |
1423 | |
8173 | 1424 /* |
1425 * If someone tries to type into the conversation backlog of a | |
1426 * conversation window then we yank focus from the conversation backlog | |
1427 * and give it to the text entry box so that people can type | |
1428 * all the live long day and it will get entered into the entry box. | |
1429 */ | |
6057 | 1430 static gboolean |
8105 | 1431 refocus_entry_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) |
6057 | 1432 { |
1433 GaimGtkConversation *gtkconv = data; | |
1434 | |
8237 | 1435 /* If we have a valid key for the conversation display, then exit */ |
8224 | 1436 if ((event->state & GDK_CONTROL_MASK) || |
8237 | 1437 (event->keyval == GDK_F10) || |
1438 (event->keyval == GDK_Shift_L) || | |
1439 (event->keyval == GDK_Shift_R) || | |
1440 (event->keyval == GDK_Escape) || | |
8177 | 1441 (event->keyval == GDK_Up) || |
1442 (event->keyval == GDK_Down) || | |
1443 (event->keyval == GDK_Left) || | |
8191 | 1444 (event->keyval == GDK_Right) || |
1445 (event->keyval == GDK_Home) || | |
1446 (event->keyval == GDK_End)) | |
8177 | 1447 return FALSE; |
1448 | |
1449 if (event->type == GDK_KEY_RELEASE) | |
1450 gtk_widget_grab_focus(gtkconv->entry); | |
1451 | |
1452 gtk_widget_event(gtkconv->entry, (GdkEvent *)event); | |
1453 | |
1454 return TRUE; | |
6057 | 1455 } |
1456 | |
4359 | 1457 static void |
4673 | 1458 menu_conv_sel_send_cb(GObject *m, gpointer data) |
4359 | 1459 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1460 GaimConvWindow *win = g_object_get_data(m, "user_data"); |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
1461 GaimAccount *account = g_object_get_data(m, "gaim_account"); |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1462 GaimConversation *conv; |
4359 | 1463 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1464 conv = gaim_conv_window_get_active_conversation(win); |
4359 | 1465 |
4491 | 1466 gaim_conversation_set_account(conv, account); |
4359 | 1467 } |
1468 | |
1469 static void | |
1470 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position, | |
1471 gchar *new_text, gint new_text_length, gpointer user_data) | |
1472 { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1473 GaimConversation *conv = (GaimConversation *)user_data; |
4359 | 1474 |
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1475 g_return_if_fail(conv != NULL); |
4359 | 1476 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1477 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
4359 | 1478 return; |
1479 | |
1480 got_typing_keypress(conv, (gtk_text_iter_is_start(position) && | |
1481 gtk_text_iter_is_end(position))); | |
1482 } | |
1483 | |
1484 static void | |
1485 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos, | |
1486 GtkTextIter *end_pos, gpointer user_data) | |
1487 { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1488 GaimConversation *conv = (GaimConversation *)user_data; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1489 GaimConvIm *im; |
4359 | 1490 |
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1491 g_return_if_fail(conv != NULL); |
4359 | 1492 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1493 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
4359 | 1494 return; |
1495 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1496 im = GAIM_CONV_IM(conv); |
4359 | 1497 |
1498 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) { | |
1499 | |
1500 /* We deleted all the text, so turn off typing. */ | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1501 if (gaim_conv_im_get_type_again_timeout(im)) |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1502 gaim_conv_im_stop_type_again_timeout(im); |
4359 | 1503 |
1504 serv_send_typing(gaim_conversation_get_gc(conv), | |
6695 | 1505 gaim_conversation_get_name(conv), |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
1506 GAIM_NOT_TYPING); |
4359 | 1507 } |
1508 else { | |
1509 /* We're deleting, but not all of it, so it counts as typing. */ | |
1510 got_typing_keypress(conv, FALSE); | |
1511 } | |
1512 } | |
1513 | |
1514 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1515 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget) |
4359 | 1516 { |
1517 static GdkCursor *cursor = NULL; | |
1518 | |
1519 gtkwin->in_drag = TRUE; | |
1520 | |
1521 if (gtkwin->drag_leave_signal) { | |
1522 g_signal_handler_disconnect(G_OBJECT(widget), | |
1523 gtkwin->drag_leave_signal); | |
1524 | |
1525 gtkwin->drag_leave_signal = 0; | |
1526 } | |
1527 | |
1528 if (cursor == NULL) | |
1529 cursor = gdk_cursor_new(GDK_FLEUR); | |
1530 | |
1531 /* Grab the pointer */ | |
1532 gtk_grab_add(gtkwin->notebook); | |
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1533 #ifndef _WIN32 |
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1534 /* 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
|
1535 always be true after a button press. */ |
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1536 if (!gdk_pointer_is_grabbed()) |
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1537 #endif |
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1538 gdk_pointer_grab(gtkwin->notebook->window, FALSE, |
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1539 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, |
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1540 NULL, cursor, GDK_CURRENT_TIME); |
4359 | 1541 } |
1542 | |
1543 static gboolean | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1544 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
4359 | 1545 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1546 GaimGtkWindow *gtkwin; |
4359 | 1547 |
1548 gtkwin = GAIM_GTK_WINDOW(win); | |
1549 | |
1550 /* | |
1551 * Make sure the user moved the mouse far enough for the | |
1552 * drag to be initiated. | |
1553 */ | |
1554 if (gtkwin->in_predrag) { | |
1555 if (e->x_root < gtkwin->drag_min_x || | |
1556 e->x_root >= gtkwin->drag_max_x || | |
1557 e->y_root < gtkwin->drag_min_y || | |
1558 e->y_root >= gtkwin->drag_max_y) { | |
1559 | |
1560 gtkwin->in_predrag = FALSE; | |
1561 notebook_init_grab(gtkwin, widget); | |
1562 } | |
1563 } | |
1564 else { /* Otherwise, draw the arrows. */ | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1565 GaimConvWindow *dest_win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1566 GaimGtkWindow *dest_gtkwin; |
4359 | 1567 GtkNotebook *dest_notebook; |
1568 GtkWidget *tab, *last_vis_tab = NULL; | |
1569 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1; | |
1570 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y; | |
1571 gboolean horiz_tabs = FALSE, tab_found = FALSE; | |
1572 GList *l; | |
1573 | |
1574 /* Get the window that the cursor is over. */ | |
1575 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); | |
1576 | |
1577 if (dest_win == NULL) { | |
1578 dnd_hints_hide_all(); | |
1579 | |
1580 return TRUE; | |
1581 } | |
1582 | |
1583 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); | |
1584 | |
1585 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook); | |
1586 | |
1587 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y); | |
1588 | |
1589 arrow1_x = arrow2_x = nb_x; | |
1590 arrow1_y = arrow2_y = nb_y; | |
1591 | |
1592 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
1593 e->x_root, e->y_root); | |
1594 | |
1595 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP || | |
1596 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) { | |
1597 | |
1598 horiz_tabs = TRUE; | |
1599 } | |
1600 | |
1601 /* Find out where to put the arrows. */ | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1602 for (l = gaim_conv_window_get_conversations(dest_win), i = 0; |
4359 | 1603 l != NULL; |
1604 l = l->next, i++) { | |
1605 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1606 GaimConversation *conv = l->data; |
4359 | 1607 |
1608 tab = GAIM_GTK_CONVERSATION(conv)->tabby; | |
1609 | |
1610 /* | |
1611 * If this is the correct tab, record the positions | |
1612 * for the arrows. | |
1613 */ | |
1614 if (i == page_num) { | |
1615 if (horiz_tabs) { | |
1616 arrow1_x = arrow2_x = nb_x + tab->allocation.x; | |
1617 arrow1_y = nb_y + tab->allocation.y; | |
1618 arrow2_y = nb_y + tab->allocation.y + | |
1619 tab->allocation.height; | |
1620 } | |
1621 else { | |
1622 arrow1_x = nb_x + tab->allocation.x; | |
1623 arrow2_x = nb_x + tab->allocation.x + | |
1624 tab->allocation.width; | |
1625 arrow1_y = arrow2_y = nb_y + tab->allocation.y; | |
1626 } | |
1627 | |
1628 tab_found = TRUE; | |
1629 break; | |
1630 } | |
1631 else { /* Keep track of the right-most tab that we see. */ | |
1632 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) { | |
1633 last_vis_tab = tab; | |
1634 last_vis_tab_loc = tab->allocation.x; | |
1635 } | |
1636 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) { | |
1637 last_vis_tab = tab; | |
1638 last_vis_tab_loc = tab->allocation.y; | |
1639 } | |
1640 } | |
1641 } | |
1642 | |
1643 /* | |
1644 * If we didn't find the tab, then we'll just place the | |
1645 * arrows to the right/bottom of the last visible tab. | |
1646 */ | |
1647 if (!tab_found && last_vis_tab) { | |
1648 if (horiz_tabs) { | |
1649 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x + | |
1650 last_vis_tab->allocation.width; | |
1651 arrow1_y = nb_y + last_vis_tab->allocation.y; | |
1652 arrow2_y = nb_y + last_vis_tab->allocation.y + | |
1653 last_vis_tab->allocation.height; | |
1654 } | |
1655 else { | |
1656 arrow1_x = nb_x + last_vis_tab->allocation.x; | |
1657 arrow2_x = nb_x + last_vis_tab->allocation.x + | |
1658 last_vis_tab->allocation.width; | |
1659 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y + | |
1660 last_vis_tab->allocation.height; | |
1661 } | |
1662 } | |
1663 | |
1664 if (horiz_tabs) { | |
1665 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y); | |
1666 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y); | |
1667 } | |
1668 else { | |
1669 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y); | |
1670 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y); | |
1671 } | |
1672 } | |
1673 | |
1674 return TRUE; | |
1675 } | |
1676 | |
1677 static gboolean | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1678 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win) |
4359 | 1679 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1680 GaimGtkWindow *gtkwin; |
4359 | 1681 |
1682 gtkwin = GAIM_GTK_WINDOW(win); | |
1683 | |
1684 if (gtkwin->in_drag) | |
1685 return FALSE; | |
1686 | |
1687 if (e->x_root < gtkwin->drag_min_x || | |
1688 e->x_root >= gtkwin->drag_max_x || | |
1689 e->y_root < gtkwin->drag_min_y || | |
1690 e->y_root >= gtkwin->drag_max_y) { | |
1691 | |
1692 gtkwin->in_predrag = FALSE; | |
1693 notebook_init_grab(gtkwin, widget); | |
1694 } | |
1695 | |
1696 return TRUE; | |
1697 } | |
1698 | |
1699 /* | |
1700 * THANK YOU GALEON! | |
1701 */ | |
1702 static gboolean | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1703 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
4359 | 1704 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1705 GaimGtkWindow *gtkwin; |
4359 | 1706 gint nb_x, nb_y, x_rel, y_rel; |
1707 GList *l; | |
1708 int tab_clicked; | |
1709 | |
1710 if (e->button != 1 || e->type != GDK_BUTTON_PRESS) | |
1711 return FALSE; | |
1712 | |
1713 gtkwin = GAIM_GTK_WINDOW(win); | |
1714 | |
1715 if (gtkwin->in_drag) { | |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1716 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", |
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1717 "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
|
1718 return TRUE; |
4359 | 1719 } |
1720 | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1721 /* |
4359 | 1722 * Make sure a tab was actually clicked. The arrow buttons |
1723 * mess things up. | |
1724 */ | |
1725 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root); | |
1726 | |
1727 if (tab_clicked == -1) | |
1728 return FALSE; | |
1729 | |
1730 /* | |
1731 * Get the relative position of the press event, with regards to | |
1732 * the position of the notebook. | |
1733 */ | |
1734 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
1735 | |
1736 x_rel = e->x_root - nb_x; | |
1737 y_rel = e->y_root - nb_y; | |
1738 | |
1739 /* Reset the min/max x/y */ | |
1740 gtkwin->drag_min_x = 0; | |
1741 gtkwin->drag_min_y = 0; | |
1742 gtkwin->drag_max_x = 0; | |
1743 gtkwin->drag_max_y = 0; | |
1744 | |
1745 /* Find out which tab was dragged. */ | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1746 for (l = gaim_conv_window_get_conversations(win); l != NULL; l = l->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1747 GaimConversation *conv = l->data; |
4359 | 1748 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby; |
1749 | |
1750 if (!GTK_WIDGET_VISIBLE(tab)) | |
1751 continue; | |
1752 | |
1753 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel) | |
1754 break; | |
1755 | |
1756 /* Save the borders of the tab. */ | |
1757 gtkwin->drag_min_x = tab->allocation.x + nb_x; | |
1758 gtkwin->drag_min_y = tab->allocation.y + nb_y; | |
1759 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x; | |
1760 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y; | |
1761 } | |
1762 | |
1763 /* Make sure the click occurred in the tab. */ | |
1764 if (e->x_root < gtkwin->drag_min_x || | |
1765 e->x_root >= gtkwin->drag_max_x || | |
1766 e->y_root < gtkwin->drag_min_y || | |
1767 e->y_root >= gtkwin->drag_max_y) { | |
1768 | |
1769 return FALSE; | |
1770 } | |
1771 | |
1772 gtkwin->in_predrag = TRUE; | |
1773 | |
1774 /* Connect the new motion signals. */ | |
1775 gtkwin->drag_motion_signal = | |
1776 g_signal_connect(G_OBJECT(widget), "motion_notify_event", | |
1777 G_CALLBACK(notebook_motion_cb), win); | |
1778 | |
1779 gtkwin->drag_leave_signal = | |
1780 g_signal_connect(G_OBJECT(widget), "leave_notify_event", | |
1781 G_CALLBACK(notebook_leave_cb), win); | |
1782 | |
1783 return FALSE; | |
1784 } | |
1785 | |
1786 static gboolean | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1787 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
4359 | 1788 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1789 GaimConvWindow *dest_win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1790 GaimGtkWindow *gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1791 GaimGtkWindow *dest_gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1792 GaimConversation *conv; |
4359 | 1793 GtkNotebook *dest_notebook; |
1794 gint dest_page_num; | |
1795 | |
1796 /* | |
1797 * Don't check to make sure that the event's window matches the | |
1798 * widget's, because we may be getting an event passed on from the | |
1799 * close button. | |
1800 */ | |
1801 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE) | |
1802 return FALSE; | |
1803 | |
1804 if (gdk_pointer_is_grabbed()) { | |
1805 gdk_pointer_ungrab(GDK_CURRENT_TIME); | |
1806 gtk_grab_remove(widget); | |
1807 } | |
1808 | |
1809 gtkwin = GAIM_GTK_WINDOW(win); | |
1810 | |
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1811 if (!gtkwin->in_predrag && !gtkwin->in_drag) |
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1812 return FALSE; |
4359 | 1813 |
1814 /* Disconnect the motion signal. */ | |
1815 if (gtkwin->drag_motion_signal) { | |
1816 g_signal_handler_disconnect(G_OBJECT(widget), | |
1817 gtkwin->drag_motion_signal); | |
1818 | |
1819 gtkwin->drag_motion_signal = 0; | |
1820 } | |
1821 | |
1822 /* | |
1823 * If we're in a pre-drag, we'll also need to disconnect the leave | |
1824 * signal. | |
1825 */ | |
1826 if (gtkwin->in_predrag) { | |
1827 gtkwin->in_predrag = FALSE; | |
1828 | |
1829 if (gtkwin->drag_leave_signal) { | |
1830 g_signal_handler_disconnect(G_OBJECT(widget), | |
1831 gtkwin->drag_leave_signal); | |
1832 | |
1833 gtkwin->drag_leave_signal = 0; | |
1834 } | |
1835 } | |
1836 | |
1837 /* If we're not in drag... */ | |
1838 /* We're perfectly normal people! */ | |
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1839 if (!gtkwin->in_drag) |
4359 | 1840 return FALSE; |
1841 | |
1842 gtkwin->in_drag = FALSE; | |
1843 | |
1844 dnd_hints_hide_all(); | |
1845 | |
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1846 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); |
4359 | 1847 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1848 conv = gaim_conv_window_get_active_conversation(win); |
4359 | 1849 |
1850 if (dest_win == NULL) { | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1851 if (gaim_conv_window_get_conversation_count(win) < 2) |
4359 | 1852 return FALSE; |
1853 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1854 if (gaim_conv_window_get_conversation_count(win) > 1) { |
4359 | 1855 /* Make a new window to stick this to. */ |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1856 GaimConvWindow *new_win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1857 GaimGtkWindow *new_gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1858 GaimGtkConversation *gtkconv; |
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1859 gint win_width, win_height; |
5121 | 1860 |
1861 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4359 | 1862 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1863 new_win = gaim_conv_window_new(); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1864 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1865 gaim_conv_window_add_conversation(new_win, |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1866 gaim_conv_window_remove_conversation(win, |
5139
d0182ae31ab8
[gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents:
5133
diff
changeset
|
1867 gaim_conversation_get_index(conv))); |
5121 | 1868 |
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1869 new_gtkwin = GAIM_GTK_WINDOW(new_win); |
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1870 |
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1871 gtk_window_get_size(GTK_WINDOW(new_gtkwin->window), |
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1872 &win_width, &win_height); |
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1873 |
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1874 gtk_window_move(GTK_WINDOW(new_gtkwin->window), |
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1875 e->x_root - (win_width / 2), |
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1876 e->y_root - (win_height / 2)); |
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1877 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1878 gaim_conv_window_show(new_win); |
4359 | 1879 } |
1880 | |
1881 return TRUE; | |
1882 } | |
1883 | |
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1884 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); |
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1885 |
4359 | 1886 /* Get the destination notebook. */ |
1887 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
1888 | |
1889 /* Get the destination page number. */ | |
1890 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
7143 | 1891 e->x_root, e->y_root); |
4359 | 1892 |
1893 if (win == dest_win) { | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1894 gaim_conv_window_move_conversation(win, |
4359 | 1895 gaim_conversation_get_index(conv), dest_page_num); |
1896 } | |
1897 else { | |
1898 size_t pos; | |
1899 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1900 gaim_conv_window_remove_conversation(win, |
4359 | 1901 gaim_conversation_get_index(conv)); |
1902 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1903 pos = gaim_conv_window_add_conversation(dest_win, conv); |
4359 | 1904 |
5901
74e273e22f94
[gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents:
5881
diff
changeset
|
1905 if (pos != dest_page_num) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1906 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1907 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1908 gaim_conv_window_switch_conversation(dest_win, dest_page_num); |
4359 | 1909 } |
1910 | |
1911 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
1912 | |
1913 return TRUE; | |
1914 } | |
1915 | |
8189 | 1916 /************************************************************************** |
1917 * A bunch of buddy icon functions | |
1918 **************************************************************************/ | |
1919 static GdkPixbuf * | |
1920 get_tab_icon(GaimConversation *conv) | |
7143 | 1921 { |
1922 GaimAccount *account = gaim_conversation_get_account(conv); | |
1923 const char *name = gaim_conversation_get_name(conv); | |
1924 GdkPixbuf *status = NULL; | |
1925 | |
1926 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
1927 GaimBuddy *b = gaim_find_buddy(account, name); | |
1928 if (b != NULL) { | |
1929 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, | |
1930 GAIM_STATUS_ICON_SMALL); | |
1931 } | |
1932 } | |
1933 | |
1934 if (!status) { | |
1935 GdkPixbuf *pixbuf; | |
1936 pixbuf = create_prpl_icon(account); | |
1937 | |
1938 if (pixbuf) { | |
1939 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15, | |
1940 GDK_INTERP_BILINEAR); | |
1941 g_object_unref(pixbuf); | |
1942 } | |
1943 } | |
1944 return status; | |
1945 } | |
1946 | |
8189 | 1947 static void |
1948 update_tab_icon(GaimConversation *conv) | |
1949 { | |
1950 GaimGtkConversation *gtkconv; | |
1951 GaimConvWindow *win = gaim_conversation_get_window(conv); | |
1952 GaimAccount *account; | |
1953 const char *name; | |
1954 GdkPixbuf *status = NULL; | |
1955 | |
1956 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
1957 name = gaim_conversation_get_name(conv); | |
1958 account = gaim_conversation_get_account(conv); | |
1959 | |
1960 status = get_tab_icon(conv); | |
1961 | |
1962 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); | |
1963 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); | |
1964 | |
1965 if (gaim_conv_window_get_active_conversation(win) == conv && gtkconv->u.im->anim == NULL) | |
1966 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status); | |
1967 | |
1968 if(status) | |
1969 g_object_unref(status); | |
1970 } | |
1971 | |
1972 static gboolean | |
1973 redraw_icon(gpointer data) | |
1974 { | |
1975 GaimConversation *conv = (GaimConversation *)data; | |
1976 GaimGtkConversation *gtkconv; | |
1977 | |
1978 GdkPixbuf *buf; | |
1979 GdkPixbuf *scale; | |
1980 GdkPixmap *pm; | |
1981 GdkBitmap *bm; | |
1982 gint delay; | |
1983 | |
1984 if (!g_list_find(gaim_get_ims(), conv)) { | |
1985 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", | |
1986 "Conversation not found in redraw_icon. I think this " | |
1987 "is a bug.\n"); | |
1988 return FALSE; | |
1989 } | |
1990 | |
1991 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
1992 | |
1993 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL); | |
1994 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
1995 | |
1996 scale = gdk_pixbuf_scale_simple(buf, | |
1997 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) / | |
1998 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
1999 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) / | |
2000 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
2001 GDK_INTERP_NEAREST); | |
2002 | |
2003 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
2004 g_object_unref(G_OBJECT(scale)); | |
2005 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm); | |
2006 g_object_unref(G_OBJECT(pm)); | |
2007 gtk_widget_queue_draw(gtkconv->u.im->icon); | |
2008 | |
2009 if (bm) | |
2010 g_object_unref(G_OBJECT(bm)); | |
2011 | |
2012 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; | |
2013 | |
2014 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv); | |
2015 | |
2016 return FALSE; | |
2017 } | |
2018 | |
2019 static void | |
2020 start_anim(GtkObject *obj, GaimConversation *conv) | |
2021 { | |
2022 GaimGtkConversation *gtkconv; | |
2023 int delay; | |
2024 | |
2025 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
2026 return; | |
2027 | |
2028 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
2029 | |
8228 | 2030 if (gtkconv->u.im->anim == NULL) |
2031 return; | |
2032 | |
8202 | 2033 if (gtkconv->u.im->icon_timer != 0) |
2034 return; | |
2035 | |
8189 | 2036 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) |
2037 return; | |
2038 | |
2039 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; | |
2040 | |
2041 if (gtkconv->u.im->anim) | |
2042 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, | |
2043 conv); | |
2044 } | |
2045 | |
2046 static void | |
2047 stop_anim(GtkObject *obj, GaimConversation *conv) | |
2048 { | |
2049 GaimGtkConversation *gtkconv; | |
2050 | |
2051 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
2052 return; | |
2053 | |
2054 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
2055 | |
2056 if (gtkconv->u.im->icon_timer != 0) | |
2057 g_source_remove(gtkconv->u.im->icon_timer); | |
2058 | |
2059 gtkconv->u.im->icon_timer = 0; | |
2060 } | |
2061 | |
2062 static void | |
2063 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv) | |
2064 { | |
2065 GaimGtkConversation *gtkconv; | |
2066 | |
2067 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
2068 return; | |
2069 | |
2070 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
2071 | |
2072 gtkconv->u.im->animate = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)); | |
2073 | |
2074 if (gtkconv->u.im->animate) | |
2075 start_anim(NULL, conv); | |
2076 else | |
2077 stop_anim(NULL, conv); | |
2078 } | |
2079 static void | |
2080 remove_icon(GaimGtkConversation *gtkconv) | |
2081 { | |
2082 g_return_if_fail(gtkconv != NULL); | |
2083 | |
2084 if (gtkconv->u.im->icon != NULL) | |
2085 gtk_container_remove(GTK_CONTAINER(gtkconv->bbox), | |
2086 gtkconv->u.im->icon->parent->parent); | |
2087 | |
2088 if (gtkconv->u.im->anim != NULL) | |
2089 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); | |
2090 | |
2091 if (gtkconv->u.im->icon_timer != 0) | |
2092 g_source_remove(gtkconv->u.im->icon_timer); | |
2093 | |
2094 if (gtkconv->u.im->iter != NULL) | |
2095 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
2096 | |
2097 gtkconv->u.im->icon_timer = 0; | |
2098 gtkconv->u.im->icon = NULL; | |
2099 gtkconv->u.im->anim = NULL; | |
2100 gtkconv->u.im->iter = NULL; | |
2101 } | |
2102 | |
2103 static gboolean | |
2104 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv) | |
2105 { | |
2106 GaimGtkConversation *gtkconv; | |
2107 static GtkWidget *menu = NULL; | |
2108 GtkWidget *button; | |
2109 | |
2110 if (e->button != 3 || e->type != GDK_BUTTON_PRESS) | |
2111 return FALSE; | |
2112 | |
2113 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
2114 | |
2115 /* | |
2116 * If a menu already exists, destroy it before creating a new one, | |
2117 * thus freeing-up the memory it occupied. | |
2118 */ | |
2119 if (menu != NULL) | |
2120 gtk_widget_destroy(menu); | |
2121 | |
2122 menu = gtk_menu_new(); | |
2123 | |
2124 if (gtkconv->u.im->anim && | |
2125 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))) | |
2126 { | |
2127 gaim_new_check_item(menu, _("Animate"), | |
2128 G_CALLBACK(toggle_icon_animate_cb), conv, | |
2129 gtkconv->u.im->icon_timer); | |
2130 } | |
2131 | |
2132 button = gtk_menu_item_new_with_label(_("Hide Icon")); | |
2133 g_signal_connect_swapped(G_OBJECT(button), "activate", | |
2134 G_CALLBACK(remove_icon), gtkconv); | |
2135 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
2136 gtk_widget_show(button); | |
2137 | |
2138 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS, | |
2139 G_CALLBACK(gaim_gtk_save_icon_dialog), conv, | |
2140 0, 0, NULL); | |
2141 | |
2142 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); | |
2143 | |
2144 return TRUE; | |
2145 } | |
2146 /************************************************************************** | |
2147 * End of the bunch of buddy icon functions | |
2148 **************************************************************************/ | |
2149 | |
7887 | 2150 /* |
2151 * Makes sure all the menu items and all the buttons are hidden/shown and | |
2152 * sensitive/insensitve. This is called after changing tabs and when an | |
2153 * account signs on or off. | |
2154 */ | |
4359 | 2155 static void |
7887 | 2156 gray_stuff_out(GaimConversation *conv) |
4359 | 2157 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2158 GaimConvWindow *win; |
7887 | 2159 GaimGtkWindow *gtkwin; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2160 GaimGtkConversation *gtkconv; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2161 GaimConnection *gc; |
7887 | 2162 GaimPluginProtocolInfo *prpl_info = NULL; |
7222 | 2163 GdkPixbuf *window_icon = NULL; |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2164 |
7887 | 2165 win = gaim_conversation_get_window(conv); |
4359 | 2166 gtkwin = GAIM_GTK_WINDOW(win); |
2167 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
7887 | 2168 gc = gaim_conversation_get_gc(conv); |
4359 | 2169 |
7879 | 2170 if (gc != NULL) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
2171 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2172 |
7887 | 2173 if (gtkwin->menu.send_as != NULL) |
2174 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); | |
2175 | |
2176 /* | |
2177 * Handle hiding and showing stuff based on what type of conv this is. | |
7929 | 2178 * Stuff that Gaim IMs support in general should be shown for IM |
2179 * conversations. Stuff that Gaim chats support in gerneal should be | |
2180 * shown for chat conversations. It doesn't matter whether the PRPL | |
2181 * supports it or not--that only affects if the button or menu item | |
2182 * is sensitive or not. | |
7887 | 2183 */ |
4359 | 2184 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
7887 | 2185 /* Show stuff that applies to IMs, hide stuff that applies to chats */ |
2186 | |
2187 /* Deal with buttons */ | |
2188 gtk_widget_show(gtkconv->info); | |
2189 gtk_widget_show(gtkconv->send); | |
2190 gtk_widget_show(gtkconv->u.im->warn); | |
2191 gtk_widget_show(gtkconv->u.im->block); | |
2192 | |
2193 /* Deal with the toolbar */ | |
8317 | 2194 //gtk_widget_show(gtkconv->toolbar.image); |
7887 | 2195 |
2196 /* Deal with menu items */ | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2197 gtk_widget_show(gtkwin->menu.view_log); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2198 gtk_widget_show(gtkwin->menu.add_pounce); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2199 gtk_widget_show(gtkwin->menu.get_info); |
7887 | 2200 gtk_widget_show(gtkwin->menu.warn); |
7859 | 2201 gtk_widget_hide(gtkwin->menu.invite); |
7887 | 2202 gtk_widget_show(gtkwin->menu.alias); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2203 gtk_widget_show(gtkwin->menu.block); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2204 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2205 if (gaim_find_buddy(gaim_conversation_get_account(conv), |
7143 | 2206 gaim_conversation_get_name(conv)) == NULL) { |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2207 gtk_widget_show(gtkwin->menu.add); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2208 gtk_widget_hide(gtkwin->menu.remove); |
7929 | 2209 gtk_widget_show(gtkconv->add); |
2210 gtk_widget_hide(gtkconv->remove); | |
7859 | 2211 } else { |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2212 gtk_widget_show(gtkwin->menu.remove); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2213 gtk_widget_hide(gtkwin->menu.add); |
7929 | 2214 gtk_widget_hide(gtkconv->add); |
2215 gtk_widget_show(gtkconv->remove); | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2216 } |
7887 | 2217 |
2218 gtk_widget_show(gtkwin->menu.insert_link); | |
2219 gtk_widget_show(gtkwin->menu.insert_image); | |
2220 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
2221 /* Show stuff that applies to IMs, hide stuff that applies to chats */ | |
2222 | |
2223 /* Deal with buttons */ | |
7952 | 2224 gtk_widget_show(gtkconv->info); |
7887 | 2225 gtk_widget_show(gtkconv->send); |
2226 gtk_widget_show(gtkconv->u.chat->invite); | |
2227 | |
2228 /* Deal with the toolbar */ | |
8317 | 2229 // gtk_widget_hide(gtkconv->toolbar.image); |
7887 | 2230 |
2231 /* Deal with menu items */ | |
7859 | 2232 gtk_widget_hide(gtkwin->menu.view_log); |
2233 gtk_widget_hide(gtkwin->menu.add_pounce); | |
2234 gtk_widget_hide(gtkwin->menu.get_info); | |
7887 | 2235 gtk_widget_hide(gtkwin->menu.warn); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2236 gtk_widget_show(gtkwin->menu.invite); |
7887 | 2237 gtk_widget_show(gtkwin->menu.alias); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2238 gtk_widget_hide(gtkwin->menu.block); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2239 |
7879 | 2240 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), |
2241 gaim_conversation_get_name(conv)) == NULL) { | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2242 gtk_widget_show(gtkwin->menu.add); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2243 gtk_widget_hide(gtkwin->menu.remove); |
7929 | 2244 gtk_widget_show(gtkconv->add); |
2245 gtk_widget_hide(gtkconv->remove); | |
7859 | 2246 } else { |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2247 gtk_widget_show(gtkwin->menu.remove); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2248 gtk_widget_hide(gtkwin->menu.add); |
7929 | 2249 gtk_widget_hide(gtkconv->add); |
2250 gtk_widget_show(gtkconv->remove); | |
7887 | 2251 } |
2252 | |
2253 gtk_widget_show(gtkwin->menu.insert_link); | |
2254 gtk_widget_hide(gtkwin->menu.insert_image); | |
2255 } | |
2256 | |
2257 /* | |
2258 * Handle graying stuff out based on whether an account is connected | |
2259 * and what features that account supports. | |
2260 */ | |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2261 if ((gc != NULL) && |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2262 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) || |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2263 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) { |
7887 | 2264 /* Account is online */ |
2265 | |
2266 /* Deal with buttons */ | |
7929 | 2267 gtk_widget_set_sensitive(gtkconv->add, TRUE); |
2268 gtk_widget_set_sensitive(gtkconv->remove, TRUE); | |
7887 | 2269 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL)); |
7929 | 2270 |
7887 | 2271 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
7929 | 2272 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->send_im != NULL)); |
7887 | 2273 gtk_widget_set_sensitive(gtkconv->u.im->warn, |
2274 (prpl_info->warn != NULL)); | |
2275 gtk_widget_set_sensitive(gtkconv->u.im->block, | |
2276 (prpl_info->add_deny != NULL)); | |
2277 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
2278 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->chat_send != NULL)); | |
2279 gtk_widget_set_sensitive(gtkconv->u.chat->invite, | |
2280 (prpl_info->chat_invite != NULL)); | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2281 } |
7887 | 2282 |
2283 /* Deal with the toolbar */ | |
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2284 #if 0 |
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2285 gtk_widget_set_sensitive(gtkconv->toolbar.link, TRUE); |
7887 | 2286 gtk_widget_set_sensitive(gtkconv->toolbar.image, |
2287 (prpl_info->options & OPT_PROTO_IM_IMAGE)); | |
7888 | 2288 gtk_widget_set_sensitive(gtkconv->toolbar.bgcolor, |
2289 !(gc->flags & GAIM_CONNECTION_NO_BGCOLOR)); | |
7887 | 2290 |
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2291 /* Deal with menu items */ |
7887 | 2292 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); |
2293 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | |
2294 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL)); | |
2295 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL)); | |
2296 gtk_widget_set_sensitive(gtkwin->menu.invite, | |
2297 (prpl_info->chat_invite != NULL)); | |
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2298 #endif |
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2299 |
7887 | 2300 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
2301 if (gaim_find_buddy(gaim_conversation_get_account(conv), | |
2302 gaim_conversation_get_name(conv)) == NULL) | |
2303 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
2304 else | |
2305 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | |
2306 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
2307 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), | |
2308 gaim_conversation_get_name(conv)) == NULL) | |
2309 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
2310 else | |
2311 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | |
2312 } | |
2313 | |
7931 | 2314 gtk_widget_set_sensitive(gtkwin->menu.block, (prpl_info->add_deny != NULL)); |
7887 | 2315 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); |
7859 | 2316 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); |
7887 | 2317 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
2318 gtk_widget_set_sensitive(gtkwin->menu.insert_image, | |
2319 (prpl_info->options & OPT_PROTO_IM_IMAGE)); | |
2320 } else { | |
2321 /* Account is offline */ | |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2322 /* Or it's a chat where we left. */ |
7887 | 2323 |
2324 /* Deal with buttons */ | |
7929 | 2325 gtk_widget_set_sensitive(gtkconv->add, FALSE); |
2326 gtk_widget_set_sensitive(gtkconv->remove, FALSE); | |
7887 | 2327 gtk_widget_set_sensitive(gtkconv->info, FALSE); |
2328 gtk_widget_set_sensitive(gtkconv->send, FALSE); | |
2329 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
2330 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE); | |
2331 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE); | |
2332 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
2333 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE); | |
2334 } | |
2335 | |
2336 /* Deal with the toolbar */ | |
8317 | 2337 //gtk_widget_set_sensitive(gtkconv->toolbar.link, TRUE); |
2338 //gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); | |
7887 | 2339 |
2340 /* Then deal with menu items */ | |
2341 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); | |
2342 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | |
2343 gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE); | |
2344 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE); | |
2345 gtk_widget_set_sensitive(gtkwin->menu.invite, FALSE); | |
2346 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
2347 gtk_widget_set_sensitive(gtkwin->menu.block, FALSE); | |
2348 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); | |
2349 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); | |
7929 | 2350 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
7887 | 2351 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); |
2352 } | |
2353 | |
2354 /* | |
2355 * Update the window's icon | |
2356 */ | |
2357 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && (gtkconv->u.im->anim)) { | |
2358 window_icon = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
2359 g_object_ref(window_icon); | |
2360 } else { | |
7219 | 2361 window_icon = get_tab_icon(conv); |
4359 | 2362 } |
7887 | 2363 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); |
2364 g_object_unref(G_OBJECT(window_icon)); | |
2365 } | |
2366 | |
2367 static void | |
8189 | 2368 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
2369 gpointer user_data) | |
2370 { | |
2371 GaimConvWindow *win; | |
2372 GaimConversation *conv; | |
2373 GaimGtkConversation *gtkconv; | |
2374 | |
2375 win = (GaimConvWindow *)user_data; | |
2376 conv = gaim_conv_window_get_active_conversation(win); | |
2377 | |
2378 g_return_if_fail(conv != NULL); | |
2379 | |
8192 | 2380 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM) |
2381 return; | |
2382 | |
8189 | 2383 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2384 | |
2385 stop_anim(NULL, conv); | |
2386 } | |
2387 | |
2388 static void | |
7887 | 2389 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
2390 gpointer user_data) | |
2391 { | |
2392 GaimConvWindow *win; | |
2393 GaimConversation *conv; | |
2394 GaimGtkConversation *gtkconv; | |
2395 GaimGtkWindow *gtkwin; | |
2396 | |
2397 win = (GaimConvWindow *)user_data; | |
2398 conv = gaim_conv_window_get_conversation_at(win, page_num); | |
2399 | |
2400 g_return_if_fail(conv != NULL); | |
2401 | |
2402 gtkwin = GAIM_GTK_WINDOW(win); | |
2403 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
2404 | |
2405 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE); | |
2406 | |
2407 /* Update the menubar */ | |
2408 gray_stuff_out(conv); | |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2409 |
4736 | 2410 update_typing_icon(conv); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2411 |
4359 | 2412 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging), |
7143 | 2413 gaim_conversation_is_logging(conv)); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2414 |
4359 | 2415 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds), |
7143 | 2416 gtkconv->make_sound); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2417 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2418 gtk_check_menu_item_set_active( |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2419 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2420 gtkconv->show_formatting_toolbar); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2421 |
8189 | 2422 /* |
2423 * We pause icons when they are not visible. If this icon should | |
2424 * be animated then start it back up again.lll | |
2425 */ | |
8192 | 2426 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && |
2427 (gtkconv->u.im->animate)) | |
8189 | 2428 start_anim(NULL, conv); |
2429 | |
4359 | 2430 gtk_widget_grab_focus(gtkconv->entry); |
4681 | 2431 |
4965 | 2432 gtk_window_set_title(GTK_WINDOW(gtkwin->window), |
7143 | 2433 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
4359 | 2434 } |
2435 | |
2436 /************************************************************************** | |
2437 * Utility functions | |
2438 **************************************************************************/ | |
2439 | |
2440 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2441 got_typing_keypress(GaimConversation *conv, gboolean first) |
4359 | 2442 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2443 GaimConvIm *im; |
4685 | 2444 |
4359 | 2445 /* |
2446 * 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
|
2447 * send GAIM_TYPED any time soon. |
4359 | 2448 */ |
2449 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2450 im = GAIM_CONV_IM(conv); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2451 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2452 if (gaim_conv_im_get_type_again_timeout(im)) |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2453 gaim_conv_im_stop_type_again_timeout(im); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2454 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2455 gaim_conv_im_start_type_again_timeout(im); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2456 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2457 if (first || (gaim_conv_im_get_type_again(im) != 0 && |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2458 time(NULL) > gaim_conv_im_get_type_again(im))) { |
4359 | 2459 |
2460 int timeout = serv_send_typing(gaim_conversation_get_gc(conv), | |
2461 (char *)gaim_conversation_get_name(conv), | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2462 GAIM_TYPING); |
4359 | 2463 |
2464 if (timeout) | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2465 gaim_conv_im_set_type_again(im, time(NULL) + timeout); |
4359 | 2466 else |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2467 gaim_conv_im_set_type_again(im, 0); |
4359 | 2468 } |
2469 } | |
2470 | |
4736 | 2471 static void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2472 update_typing_icon(GaimConversation *conv) |
4736 | 2473 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2474 GaimGtkWindow *gtkwin; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2475 GaimConvIm *im = NULL; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2476 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
4736 | 2477 |
2478 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); | |
2479 | |
2480 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2481 im = GAIM_CONV_IM(conv); |
4736 | 2482 |
2483 if(gtkwin->menu.typing_icon) { | |
2484 gtk_widget_destroy(gtkwin->menu.typing_icon); | |
2485 gtkwin->menu.typing_icon = NULL; | |
2486 } | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2487 if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) { |
4736 | 2488 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
2489 gtk_image_menu_item_set_image( | |
2490 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
2491 gtk_image_new_from_stock(GAIM_STOCK_TYPING, | |
2492 GTK_ICON_SIZE_MENU)); | |
4757 | 2493 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
4736 | 2494 _("User is typing..."), NULL); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2495 } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) { |
4736 | 2496 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
2497 gtk_image_menu_item_set_image( | |
2498 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
2499 gtk_image_new_from_stock(GAIM_STOCK_TYPED, | |
2500 GTK_ICON_SIZE_MENU)); | |
4757 | 2501 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
4736 | 2502 _("User has typed something and paused"), NULL); |
2503 } | |
2504 | |
2505 if(gtkwin->menu.typing_icon) { | |
2506 gtk_menu_item_set_right_justified( | |
2507 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE); | |
2508 gtk_widget_show_all(gtkwin->menu.typing_icon); | |
2509 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar), | |
2510 gtkwin->menu.typing_icon); | |
2511 } | |
2512 } | |
2513 | |
4685 | 2514 static gboolean |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2515 update_send_as_selection(GaimConvWindow *win) |
4359 | 2516 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2517 GaimAccount *account; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2518 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2519 GaimGtkWindow *gtkwin; |
4359 | 2520 GtkWidget *menu; |
2521 GList *child; | |
2522 | |
7090
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2523 if (g_list_find(gaim_get_windows(), win) == NULL) |
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2524 return FALSE; |
4849 | 2525 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2526 conv = gaim_conv_window_get_active_conversation(win); |
4359 | 2527 |
5860
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2528 if (conv == NULL) |
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2529 return FALSE; |
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2530 |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2531 account = gaim_conversation_get_account(conv); |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2532 gtkwin = GAIM_GTK_WINDOW(win); |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2533 |
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2534 if (gtkwin->menu.send_as == NULL) |
4685 | 2535 return FALSE; |
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2536 |
4359 | 2537 gtk_widget_show(gtkwin->menu.send_as); |
2538 | |
2539 menu = gtk_menu_item_get_submenu( | |
2540 GTK_MENU_ITEM(gtkwin->menu.send_as)); | |
2541 | |
2542 for (child = gtk_container_get_children(GTK_CONTAINER(menu)); | |
2543 child != NULL; | |
2544 child = child->next) { | |
2545 | |
2546 GtkWidget *item = child->data; | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2547 GaimAccount *item_account = g_object_get_data(G_OBJECT(item), |
4673 | 2548 "gaim_account"); |
2549 | |
2550 if (account == item_account) { | |
4359 | 2551 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); |
2552 break; | |
2553 } | |
2554 } | |
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2555 |
4685 | 2556 return FALSE; |
4359 | 2557 } |
2558 | |
2559 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2560 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv) |
4359 | 2561 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2562 GaimGtkWindow *gtkwin; |
4359 | 2563 GtkWidget *menu; |
2564 GtkWidget *menuitem; | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2565 GList *gcs; |
4359 | 2566 GList *convs; |
2567 GSList *group = NULL; | |
2568 gboolean first_offline = TRUE; | |
2569 gboolean found_online = FALSE; | |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2570 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
4359 | 2571 |
2572 gtkwin = GAIM_GTK_WINDOW(win); | |
2573 | |
2574 if (gtkwin->menu.send_as != NULL) | |
2575 gtk_widget_destroy(gtkwin->menu.send_as); | |
2576 | |
2577 /* See if we have > 1 connection active. */ | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2578 if (g_list_length(gaim_connections_get_all()) < 2) { |
4359 | 2579 /* Now make sure we don't have any Offline entries. */ |
2580 gboolean found_offline = FALSE; | |
2581 | |
2582 for (convs = gaim_get_conversations(); | |
2583 convs != NULL; | |
2584 convs = convs->next) { | |
2585 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2586 GaimConversation *conv; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2587 GaimAccount *account; |
4491 | 2588 |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2589 conv = (GaimConversation *)convs->data; |
4491 | 2590 account = gaim_conversation_get_account(conv); |
2591 | |
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2592 if (account != NULL && account->gc == NULL) { |
4359 | 2593 found_offline = TRUE; |
2594 break; | |
2595 } | |
2596 } | |
2597 | |
2598 if (!found_offline) { | |
2599 gtkwin->menu.send_as = NULL; | |
2600 return; | |
2601 } | |
2602 } | |
2603 | |
2604 /* Build the Send As menu */ | |
2605 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As")); | |
2606 gtk_widget_show(gtkwin->menu.send_as); | |
2607 | |
2608 menu = gtk_menu_new(); | |
7857
43f63ff8a6d8
[gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents:
7855
diff
changeset
|
2609 gtk_menu_shell_insert(GTK_MENU_SHELL(gtkwin->menu.menubar), |
43f63ff8a6d8
[gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents:
7855
diff
changeset
|
2610 gtkwin->menu.send_as, 2); |
4359 | 2611 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu); |
2612 | |
2613 gtk_widget_show(menu); | |
2614 | |
2615 /* Fill it with entries. */ | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2616 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) { |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2617 |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2618 GaimConnection *gc; |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2619 GaimAccount *account; |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2620 GtkWidget *box; |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2621 GtkWidget *label; |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2622 GtkWidget *image; |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2623 GdkPixbuf *pixbuf, *scale; |
4359 | 2624 |
2625 found_online = TRUE; | |
2626 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2627 gc = (GaimConnection *)gcs->data; |
4359 | 2628 |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2629 /* Create a pixmap for the protocol icon. */ |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2630 pixbuf = create_prpl_icon(gc->account); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2631 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
|
2632 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2633 /* Now convert it to GtkImage */ |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2634 if (pixbuf == NULL) |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2635 image = gtk_image_new(); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2636 else |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2637 image = gtk_image_new_from_pixbuf(scale); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2638 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2639 gtk_size_group_add_widget(sg, image); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2640 |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2641 g_object_unref(G_OBJECT(scale)); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2642 g_object_unref(G_OBJECT(pixbuf)); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2643 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2644 account = gaim_connection_get_account(gc); |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2645 |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2646 /* Make our menu item */ |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2647 menuitem = gtk_radio_menu_item_new_with_label(group, |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2648 gaim_account_get_username(account)); |
4793 | 2649 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
4359 | 2650 |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2651 /* Do some evil, see some evil, speak some evil. */ |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2652 box = gtk_hbox_new(FALSE, 0); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2653 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2654 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2655 g_object_ref(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2656 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2657 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2658 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2659 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2660 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2661 g_object_unref(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2662 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2663 gtk_container_add(GTK_CONTAINER(menuitem), box); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2664 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2665 gtk_widget_show(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2666 gtk_widget_show(image); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2667 gtk_widget_show(box); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2668 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2669 /* Set our data and callbacks. */ |
4359 | 2670 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
4673 | 2671 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account); |
4359 | 2672 |
4786 | 2673 g_signal_connect(G_OBJECT(menuitem), "activate", |
4673 | 2674 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
4359 | 2675 |
2676 gtk_widget_show(menuitem); | |
2677 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
2678 } | |
2679 | |
2680 /* | |
2681 * Fill it with any accounts that still has an open (yet disabled) window | |
2682 * (signed off accounts with a window open). | |
2683 */ | |
2684 for (convs = gaim_get_conversations(); | |
2685 convs != NULL; | |
2686 convs = convs->next) { | |
2687 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2688 GaimConversation *conv; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2689 GaimAccount *account; |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2690 GtkWidget *box; |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2691 GtkWidget *label; |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2692 GtkWidget *image; |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2693 GdkPixbuf *pixbuf, *scale; |
4359 | 2694 |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2695 conv = (GaimConversation *)convs->data; |
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2696 |
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2697 if (conv == deleted_conv) |
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2698 continue; |
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2699 |
4491 | 2700 account = gaim_conversation_get_account(conv); |
2701 | |
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2702 if (account != NULL && account->gc == NULL) { |
4359 | 2703 if (first_offline && found_online) { |
2704 menuitem = gtk_separator_menu_item_new(); | |
2705 gtk_widget_show(menuitem); | |
2706 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
2707 | |
2708 first_offline = FALSE; | |
2709 } | |
2710 | |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2711 /* Create a pixmap for the protocol icon. */ |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2712 pixbuf = create_prpl_icon(account); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2713 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2714 GDK_INTERP_BILINEAR); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2715 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2716 /* Now convert it to GtkImage */ |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2717 if (pixbuf == NULL) |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2718 image = gtk_image_new(); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2719 else |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2720 image = gtk_image_new_from_pixbuf(scale); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2721 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2722 gtk_size_group_add_widget(sg, image); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2723 |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2724 if (scale != NULL) g_object_unref(scale); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2725 if (pixbuf != NULL) g_object_unref(pixbuf); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2726 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2727 /* Make our menu item */ |
4359 | 2728 menuitem = gtk_radio_menu_item_new_with_label(group, |
4491 | 2729 account->username); |
4793 | 2730 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
4359 | 2731 |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2732 /* Do some evil, see some evil, speak some evil. */ |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2733 box = gtk_hbox_new(FALSE, 0); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2734 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2735 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2736 g_object_ref(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2737 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2738 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2739 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2740 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2741 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2742 g_object_unref(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2743 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2744 gtk_container_add(GTK_CONTAINER(menuitem), box); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2745 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2746 gtk_widget_show(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2747 gtk_widget_show(image); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2748 gtk_widget_show(box); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2749 |
4359 | 2750 gtk_widget_set_sensitive(menuitem, FALSE); |
4786 | 2751 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
4674 | 2752 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account); |
4359 | 2753 |
4786 | 2754 g_signal_connect(G_OBJECT(menuitem), "activate", |
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
2755 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
4786 | 2756 |
4359 | 2757 gtk_widget_show(menuitem); |
2758 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
2759 } | |
2760 } | |
2761 | |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2762 g_object_unref(sg); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2763 |
4359 | 2764 gtk_widget_show(gtkwin->menu.send_as); |
2765 update_send_as_selection(win); | |
2766 } | |
2767 | |
2768 static GList * | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2769 generate_invite_user_names(GaimConnection *gc) |
4359 | 2770 { |
6695 | 2771 GaimBlistNode *gnode,*cnode,*bnode; |
4359 | 2772 static GList *tmp = NULL; |
2773 | |
2774 if (tmp) | |
2775 g_list_free(tmp); | |
2776 | |
2777 tmp = g_list_append(NULL, ""); | |
2778 | |
2779 if (gc != NULL) { | |
4785 | 2780 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
2781 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
2782 continue; | |
6695 | 2783 for(cnode = gnode->child; cnode; cnode = cnode->next) { |
2784 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
4785 | 2785 continue; |
6695 | 2786 for(bnode = cnode->child; bnode; bnode = bnode->next) { |
2787 GaimBuddy *buddy; | |
2788 | |
2789 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
2790 continue; | |
2791 | |
2792 buddy = (GaimBuddy *)bnode; | |
2793 | |
2794 if (buddy->account == gc->account && | |
2795 GAIM_BUDDY_IS_ONLINE(buddy)) | |
2796 tmp = g_list_append(tmp, buddy->name); | |
2797 } | |
4359 | 2798 } |
2799 } | |
2800 } | |
2801 | |
2802 return tmp; | |
2803 } | |
2804 | |
2805 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2806 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos) |
4359 | 2807 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2808 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2809 GaimGtkChatPane *gtkchat; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2810 GaimConvChat *chat; |
4359 | 2811 GtkTreeIter iter; |
2812 GtkListStore *ls; | |
2813 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2814 chat = GAIM_CONV_CHAT(conv); |
4359 | 2815 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2816 gtkchat = gtkconv->u.chat; | |
2817 | |
2818 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list))); | |
2819 | |
2820 gtk_list_store_append(ls, &iter); | |
2821 gtk_list_store_set(ls, &iter, 0, | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2822 (gaim_conv_chat_is_user_ignored(chat, name) ? "X" : " "), |
4359 | 2823 1, name, -1); |
2824 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
2825 GTK_SORT_ASCENDING); | |
2826 } | |
2827 | |
2828 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2829 tab_complete(GaimConversation *conv) |
4359 | 2830 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2831 GaimGtkConversation *gtkconv; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2832 GaimConvChat *chat; |
4359 | 2833 GtkTextIter cursor, word_start, start_buffer; |
2834 int start; | |
2835 int most_matched = -1; | |
2836 char *entered, *partial = NULL; | |
2837 char *text; | |
8021 | 2838 char *nick_partial; |
4359 | 2839 GList *matches = NULL; |
2840 GList *nicks = NULL; | |
2841 | |
2842 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2843 chat = GAIM_CONV_CHAT(conv); |
4359 | 2844 |
2845 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
2846 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
2847 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
2848 | |
2849 word_start = cursor; | |
2850 | |
2851 /* if there's nothing there just return */ | |
2852 if (!gtk_text_iter_compare(&cursor, &start_buffer)) | |
2853 return; | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
2854 |
4359 | 2855 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer, |
2856 &cursor, FALSE); | |
2857 | |
2858 /* if we're at the end of ": " we need to move back 2 spaces */ | |
2859 start = strlen(text) - 1; | |
2860 | |
8021 | 2861 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) { |
4359 | 2862 gtk_text_iter_backward_chars(&word_start, 2); |
8021 | 2863 start-=2; |
2864 } | |
4359 | 2865 |
2866 /* find the start of the word that we're tabbing */ | |
2867 while (start >= 0 && text[start] != ' ') { | |
2868 gtk_text_iter_backward_char(&word_start); | |
2869 start--; | |
2870 } | |
2871 | |
2872 g_free(text); | |
2873 | |
2874 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start, | |
2875 &cursor, FALSE); | |
2876 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
2877 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
4359 | 2878 if (strlen(entered) >= 2 && |
2879 !strncmp(": ", entered + strlen(entered) - 2, 2)) { | |
2880 | |
2881 entered[strlen(entered) - 2] = 0; | |
2882 } | |
2883 } | |
2884 | |
8021 | 2885 if (!g_utf8_strlen(entered, -1)) { |
4359 | 2886 g_free(entered); |
2887 return; | |
2888 } | |
2889 | |
8021 | 2890 nick_partial = g_malloc(strlen(entered)+1); |
2891 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2892 for (nicks = gaim_conv_chat_get_users(chat); |
4359 | 2893 nicks != NULL; |
2894 nicks = nicks->next) { | |
2895 | |
2896 char *nick = nicks->data; | |
8021 | 2897 |
8159 | 2898 strncpy(nick_partial, nick, strlen(entered)); |
8172 | 2899 nick_partial[strlen(entered)] = '\0'; |
8021 | 2900 if(gaim_utf8_strcasecmp(nick_partial, entered)) |
2901 continue; | |
4359 | 2902 |
2903 /* if we're here, it's a possible completion */ | |
2904 | |
2905 /* 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
|
2906 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
4359 | 2907 gtk_text_buffer_delete(gtkconv->entry_buffer, |
2908 &word_start, &cursor); | |
2909 | |
2910 if (strlen(nick) == strlen(entered)) { | |
2911 nicks = (nicks->next | |
2912 ? nicks->next | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2913 : gaim_conv_chat_get_users(chat)); |
4359 | 2914 |
2915 nick = nicks->data; | |
2916 } | |
2917 | |
2918 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
2919 &start_buffer); | |
2920 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
2921 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
2922 | |
2923 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
2924 char *tmp = g_strdup_printf("%s: ", nick); | |
2925 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
2926 tmp, -1); | |
2927 g_free(tmp); | |
2928 } | |
2929 else | |
2930 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
2931 nick, -1); | |
2932 | |
8021 | 2933 g_free(nick_partial); |
4359 | 2934 g_free(entered); |
2935 | |
2936 return; | |
2937 } | |
2938 | |
2939 /* we're only here if we're doing new style */ | |
2940 if (most_matched == -1) { | |
2941 /* | |
2942 * this will only get called once, since from now | |
2943 * on most_matched is >= 0 | |
2944 */ | |
2945 most_matched = strlen(nick); | |
2946 partial = g_strdup(nick); | |
2947 } | |
2948 else if (most_matched) { | |
8021 | 2949 char *tmp = g_strdup(nick); |
2950 | |
2951 while (gaim_utf8_strcasecmp(tmp, partial)) { | |
2952 partial[most_matched] = '\0'; | |
2953 if(most_matched < strlen(tmp)) | |
2954 tmp[most_matched] = '\0'; | |
4359 | 2955 most_matched--; |
8021 | 2956 } |
8079 | 2957 most_matched++; |
8021 | 2958 |
2959 g_free(tmp); | |
4359 | 2960 } |
2961 | |
2962 matches = g_list_append(matches, nick); | |
2963 } | |
2964 | |
8021 | 2965 g_free(nick_partial); |
2966 | |
4359 | 2967 /* we're only here if we're doing new style */ |
2968 | |
2969 /* if there weren't any matches, return */ | |
2970 if (!matches) { | |
2971 /* if matches isn't set partials won't be either */ | |
2972 g_free(entered); | |
2973 return; | |
2974 } | |
2975 | |
2976 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor); | |
2977 | |
2978 if (!matches->next) { | |
2979 /* there was only one match. fill it in. */ | |
2980 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
2981 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
2982 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
2983 | |
2984 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
2985 char *tmp = g_strdup_printf("%s: ", (char *)matches->data); | |
2986 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1); | |
2987 g_free(tmp); | |
2988 } | |
2989 else | |
2990 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
2991 matches->data, -1); | |
2992 | |
2993 matches = g_list_remove(matches, matches->data); | |
2994 } | |
2995 else { | |
2996 /* | |
2997 * there were lots of matches, fill in as much as possible | |
2998 * and display all of them | |
2999 */ | |
3000 char *addthis = g_malloc0(1); | |
3001 | |
3002 while (matches) { | |
3003 char *tmp = addthis; | |
3004 addthis = g_strconcat(tmp, matches->data, " ", NULL); | |
3005 g_free(tmp); | |
3006 matches = g_list_remove(matches, matches->data); | |
3007 } | |
3008 | |
6982 | 3009 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG, |
4359 | 3010 time(NULL)); |
3011 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1); | |
3012 g_free(addthis); | |
3013 } | |
3014 | |
3015 g_free(entered); | |
3016 g_free(partial); | |
3017 } | |
3018 | |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3019 static void |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3020 save_convo(GtkWidget *save, GaimConversation *c) |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3021 { |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3022 char buf[BUF_LONG]; |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3023 GtkWidget *window; |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3024 |
7859 | 3025 window = gtk_file_selection_new(_("Save Conversation")); |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3026 |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3027 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log", |
7261 | 3028 gaim_home_dir(), gaim_normalize(c->account, c->name)); |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3029 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3030 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
|
3031 "gaim_conversation", c); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3032 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
6038 | 3033 "clicked", G_CALLBACK(do_check_save_convo), window); |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3034 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
|
3035 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3036 gtk_widget_show(window); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3037 } |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3038 |
4359 | 3039 static GtkItemFactoryEntry menu_items[] = |
3040 { | |
3041 /* Conversation menu */ | |
4596 | 3042 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" }, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3043 |
7887 | 3044 { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb, |
7859 | 3045 0, "<StockItem>", GAIM_STOCK_IM }, |
3046 | |
3047 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" }, | |
3048 | |
7880 | 3049 { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0, "<StockItem>", GTK_STOCK_FIND }, |
7859 | 3050 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL }, |
4596 | 3051 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, |
4359 | 3052 "<StockItem>", GTK_STOCK_SAVE_AS }, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3053 |
4359 | 3054 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" }, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3055 |
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3056 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3057 0, NULL }, |
7859 | 3058 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3059 "<StockItem>", GAIM_STOCK_INFO }, |
7859 | 3060 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0, |
3061 "<StockItem>", GAIM_STOCK_WARN }, | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3062 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3063 "<StockItem>", GAIM_STOCK_INVITE }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3064 |
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3065 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" }, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3066 |
7859 | 3067 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0, |
3068 "<StockItem>", GAIM_STOCK_EDIT }, | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3069 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3070 "<StockItem>", GAIM_STOCK_BLOCK }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3071 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3072 "<StockItem>", GTK_STOCK_ADD }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3073 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3074 "<StockItem>", GTK_STOCK_REMOVE }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3075 |
7859 | 3076 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" }, |
3077 | |
8317 | 3078 { N_("/Conversation/Insert Lin_k..."), NULL, NULL, 0, //menu_insert_link_cb, 0, |
7859 | 3079 "<StockItem>", GAIM_STOCK_LINK }, |
8317 | 3080 { N_("/Conversation/Insert Imag_e..."), NULL, NULL, 0, //menu_insert_image_cb, 0, |
7859 | 3081 "<StockItem>", GAIM_STOCK_IMAGE }, |
3082 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3083 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3084 |
4596 | 3085 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, |
4359 | 3086 "<StockItem>", GTK_STOCK_CLOSE }, |
3087 | |
3088 /* Options */ | |
4596 | 3089 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, |
3090 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, | |
3091 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, | |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3092 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" }, |
4359 | 3093 }; |
3094 | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
3095 static const int menu_item_count = |
4359 | 3096 sizeof(menu_items) / sizeof(*menu_items); |
3097 | |
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3098 static char * |
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3099 item_factory_translate_func (const char *path, gpointer func_data) |
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3100 { |
7386 | 3101 return _((char *)path); |
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3102 } |
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3103 |
4359 | 3104 static GtkWidget * |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3105 setup_menubar(GaimConvWindow *win) |
4359 | 3106 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3107 GaimGtkWindow *gtkwin; |
5116 | 3108 GtkAccelGroup *accel_group; |
4359 | 3109 gtkwin = GAIM_GTK_WINDOW(win); |
3110 | |
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3111 accel_group = gtk_accel_group_new (); |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3112 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group); |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3113 g_object_unref (accel_group); |
5116 | 3114 |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3115 gtkwin->menu.item_factory = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3116 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3117 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3118 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3119 item_factory_translate_func, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3120 NULL, NULL); |
4630 | 3121 |
3122 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count, | |
4359 | 3123 menu_items, win); |
7420 | 3124 g_signal_connect(G_OBJECT(accel_group), "accel-changed", |
3125 G_CALLBACK(gaim_gtk_save_accels_cb), NULL); | |
4359 | 3126 |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3127 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3128 gtkwin->menu.menubar = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3129 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>"); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3130 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3131 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3132 gtkwin->menu.view_log = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3133 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
7295 | 3134 N_("/Conversation/View Log")); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3135 /* --- */ |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3136 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3137 gtkwin->menu.add_pounce = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3138 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3139 N_("/Conversation/Add Buddy Pounce...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3140 |
7879 | 3141 /* --- */ |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3142 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3143 gtkwin->menu.get_info = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3144 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
7859 | 3145 N_("/Conversation/Get Info")); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3146 |
7879 | 3147 gtkwin->menu.warn = |
3148 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
3149 N_("/Conversation/Warn...")); | |
3150 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3151 gtkwin->menu.invite = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3152 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3153 N_("/Conversation/Invite...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3154 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3155 /* --- */ |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3156 |
7879 | 3157 gtkwin->menu.alias = |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3158 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
7879 | 3159 N_("/Conversation/Alias...")); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3160 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3161 gtkwin->menu.block = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3162 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3163 N_("/Conversation/Block...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3164 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3165 gtkwin->menu.add = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3166 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3167 N_("/Conversation/Add...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3168 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3169 gtkwin->menu.remove = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3170 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3171 N_("/Conversation/Remove...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3172 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3173 /* --- */ |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3174 |
7879 | 3175 gtkwin->menu.insert_link = |
3176 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
3177 N_("/Conversation/Insert Link...")); | |
3178 | |
3179 gtkwin->menu.insert_image = | |
3180 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
3181 N_("/Conversation/Insert Image...")); | |
3182 | |
3183 /* --- */ | |
3184 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3185 gtkwin->menu.logging = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3186 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3187 N_("/Options/Enable Logging")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3188 gtkwin->menu.sounds = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3189 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3190 N_("/Options/Enable Sounds")); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3191 gtkwin->menu.show_formatting_toolbar = |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3192 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3193 N_("/Options/Show Formatting Toolbar")); |
4359 | 3194 |
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
3195 generate_send_as_items(win, NULL); |
4359 | 3196 |
3197 gtk_widget_show(gtkwin->menu.menubar); | |
4931 | 3198 |
3199 return gtkwin->menu.menubar; | |
4359 | 3200 } |
3201 | |
3202 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3203 setup_im_buttons(GaimConversation *conv, GtkWidget *parent) |
4359 | 3204 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3205 GaimConnection *gc; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3206 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3207 GaimGtkImPane *gtkim; |
4359 | 3208 |
3209 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3210 gtkim = gtkconv->u.im; | |
3211 gc = gaim_conversation_get_gc(conv); | |
3212 | |
3213 /* From right to left... */ | |
3214 | |
3215 /* Send button */ | |
3216 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3217 GAIM_STOCK_SEND, GAIM_CONV_IM); |
4359 | 3218 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); |
3219 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
3220 | |
3221 /* Separator */ | |
3222 if (gtkim->sep2 != NULL) | |
3223 gtk_widget_destroy(gtkim->sep2); | |
3224 | |
3225 gtkim->sep2 = gtk_vseparator_new(); | |
3226 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0); | |
3227 gtk_widget_show(gtkim->sep2); | |
3228 | |
3229 /* Now, um, just kind of all over the place. Huh? */ | |
3230 | |
3231 /* Warn button */ | |
3232 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3233 GAIM_STOCK_WARN, GAIM_CONV_IM); |
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3234 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn, |
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3235 _("Warn the user"), NULL); |
7929 | 3236 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0); |
3237 | |
3238 /* Block button */ | |
3239 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3240 GAIM_STOCK_BLOCK, GAIM_CONV_IM); |
7929 | 3241 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block, |
3242 _("Block the user"), NULL); | |
3243 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0); | |
3244 | |
3245 /* Add button */ | |
3246 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3247 GTK_STOCK_ADD, GAIM_CONV_IM); |
7929 | 3248 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add, |
3249 _("Add the user to your buddy list"), NULL); | |
3250 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0); | |
3251 | |
3252 /* Remove button */ | |
3253 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3254 GTK_STOCK_REMOVE, GAIM_CONV_IM); |
7929 | 3255 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove, |
3256 _("Remove the user from your buddy list"), NULL); | |
3257 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0); | |
4359 | 3258 |
3259 /* Info button */ | |
3260 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3261 GAIM_STOCK_INFO, GAIM_CONV_IM); |
4359 | 3262 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info, |
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3263 _("Get the user's information"), NULL); |
7929 | 3264 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0); |
3265 | |
3266 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE); | |
3267 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE); | |
3268 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); | |
3269 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); | |
4359 | 3270 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE); |
3271 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); | |
7929 | 3272 |
3273 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn); | |
3274 gtk_size_group_add_widget(gtkconv->sg, gtkim->block); | |
3275 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); | |
3276 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); | |
4359 | 3277 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info); |
3278 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); | |
7929 | 3279 |
3280 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1); | |
3281 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2); | |
3282 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 3); | |
3283 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 4); | |
3284 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 5); | |
4359 | 3285 |
3286 gaim_gtkconv_update_buttons_by_protocol(conv); | |
3287 | |
3288 g_signal_connect(G_OBJECT(gtkim->warn), "clicked", | |
3289 G_CALLBACK(warn_cb), conv); | |
3290 g_signal_connect(G_OBJECT(gtkim->block), "clicked", | |
3291 G_CALLBACK(block_cb), conv); | |
7929 | 3292 g_signal_connect(G_OBJECT(gtkconv->add), "clicked", |
3293 G_CALLBACK(add_remove_cb), conv); | |
3294 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", | |
3295 G_CALLBACK(add_remove_cb), conv); | |
3296 g_signal_connect(G_OBJECT(gtkconv->info), "clicked", | |
3297 G_CALLBACK(info_cb), conv); | |
3298 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", | |
3299 G_CALLBACK(send_cb), conv); | |
4359 | 3300 } |
3301 | |
3302 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3303 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent) |
4359 | 3304 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3305 GaimConnection *gc; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3306 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3307 GaimGtkChatPane *gtkchat; |
4359 | 3308 |
3309 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3310 gtkchat = gtkconv->u.chat; | |
3311 gc = gaim_conversation_get_gc(conv); | |
3312 | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3313 /* From right to left... */ |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3314 |
4359 | 3315 /* Send button */ |
3316 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
3317 GAIM_STOCK_SEND, GAIM_CONV_CHAT); | |
3318 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); | |
3319 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
3320 | |
3321 /* Separator */ | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3322 if (gtkchat->sep != NULL) |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3323 gtk_widget_destroy(gtkchat->sep); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3324 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3325 gtkchat->sep = gtk_vseparator_new(); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3326 gtk_box_pack_end(GTK_BOX(parent), gtkchat->sep, FALSE, TRUE, 0); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3327 gtk_widget_show(gtkchat->sep); |
4359 | 3328 |
3329 /* Invite */ | |
3330 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite, | |
3331 GAIM_STOCK_INVITE, GAIM_CONV_CHAT); | |
3332 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite, | |
3333 _("Invite a user"), NULL); | |
7931 | 3334 gtk_box_pack_start(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0); |
4359 | 3335 |
7929 | 3336 /* Add button */ |
3337 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, | |
3338 GTK_STOCK_ADD, GAIM_CONV_CHAT); | |
3339 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add, | |
3340 _("Add the chat to your buddy list"), NULL); | |
3341 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0); | |
3342 | |
3343 /* Remove button */ | |
3344 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove, | |
3345 GTK_STOCK_REMOVE, GAIM_CONV_CHAT); | |
3346 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove, | |
3347 _("Remove the chat from your buddy list"), NULL); | |
3348 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0); | |
3349 | |
4359 | 3350 /* Set the relief on these. */ |
3351 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE); | |
7929 | 3352 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); |
3353 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); | |
4359 | 3354 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); |
3355 | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3356 gtk_size_group_add_widget(gtkconv->sg, gtkchat->invite); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3357 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3358 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3359 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3360 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3361 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 1); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3362 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 3); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3363 gtk_box_reorder_child(GTK_BOX(parent), gtkchat->invite, 3); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3364 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3365 gaim_gtkconv_update_buttons_by_protocol(conv); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3366 |
4359 | 3367 /* Callbacks */ |
7929 | 3368 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked", |
3369 G_CALLBACK(invite_cb), conv); | |
3370 g_signal_connect(G_OBJECT(gtkconv->add), "clicked", | |
3371 G_CALLBACK(add_remove_cb), conv); | |
3372 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", | |
3373 G_CALLBACK(add_remove_cb), conv); | |
4359 | 3374 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", |
3375 G_CALLBACK(send_cb), conv); | |
3376 } | |
3377 | |
3378 | |
7971 | 3379 static void topic_callback(GtkWidget *w, GaimConversation *conv) |
3380 { | |
3381 GaimPluginProtocolInfo *prpl_info = NULL; | |
3382 GaimConnection *gc; | |
3383 GaimGtkConversation *gtkconv; | |
3384 GaimGtkChatPane *gtkchat; | |
3385 const char *topic; | |
3386 | |
3387 gc = gaim_conversation_get_gc(conv); | |
3388 | |
3389 if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl))) | |
3390 return; | |
3391 | |
3392 if(prpl_info->set_chat_topic == NULL) | |
3393 return; | |
3394 | |
3395 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3396 gtkchat = gtkconv->u.chat; | |
3397 topic = gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text)); | |
3398 | |
3399 if(!g_utf8_collate(topic, gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv)))) | |
3400 return; | |
3401 | |
3402 prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), topic); | |
3403 } | |
3404 | |
4359 | 3405 static GtkWidget * |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3406 setup_chat_pane(GaimConversation *conv) |
4359 | 3407 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3408 GaimPluginProtocolInfo *prpl_info = NULL; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3409 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3410 GaimGtkChatPane *gtkchat; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3411 GaimConnection *gc; |
4359 | 3412 GtkWidget *vpaned, *hpaned; |
3413 GtkWidget *vbox, *hbox; | |
3414 GtkWidget *lbox, *bbox; | |
3415 GtkWidget *label; | |
3416 GtkWidget *list; | |
3417 GtkWidget *button; | |
7949 | 3418 GtkWidget *sw; |
4359 | 3419 GtkListStore *ls; |
3420 GtkCellRenderer *rend; | |
3421 GtkTreeViewColumn *col; | |
8143 | 3422 GList *focus_chain; |
4359 | 3423 |
3424 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3425 gtkchat = gtkconv->u.chat; | |
3426 gc = gaim_conversation_get_gc(conv); | |
3427 | |
3428 /* Setup the outer pane. */ | |
3429 vpaned = gtk_vpaned_new(); | |
3430 gtk_widget_show(vpaned); | |
3431 | |
3432 /* Setup the top part of the pane. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3433 vbox = gtk_vbox_new(FALSE, 6); |
4359 | 3434 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE); |
3435 gtk_widget_show(vbox); | |
3436 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3437 if (gc != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3438 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3439 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3440 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC) |
4359 | 3441 { |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3442 hbox = gtk_hbox_new(FALSE, 6); |
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3443 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
4359 | 3444 gtk_widget_show(hbox); |
3445 | |
3446 label = gtk_label_new(_("Topic:")); | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3447 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
4359 | 3448 gtk_widget_show(label); |
3449 | |
3450 gtkchat->topic_text = gtk_entry_new(); | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3451 |
7971 | 3452 if(prpl_info->set_chat_topic == NULL) { |
3453 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE); | |
3454 } else { | |
3455 g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate", | |
3456 G_CALLBACK(topic_callback), conv); | |
3457 } | |
3458 | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3459 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0); |
4359 | 3460 gtk_widget_show(gtkchat->topic_text); |
3461 } | |
3462 | |
3463 /* Setup the horizontal pane. */ | |
3464 hpaned = gtk_hpaned_new(); | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3465 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); |
4359 | 3466 gtk_widget_show(hpaned); |
3467 | |
3468 /* Setup the scrolled window to put gtkimhtml in. */ | |
3469 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
3470 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
8076 | 3471 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
4359 | 3472 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), |
3473 GTK_SHADOW_IN); | |
3474 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE); | |
3475 | |
3476 gtk_widget_set_size_request(gtkconv->sw, | |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3477 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3478 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3479 |
4359 | 3480 gtk_widget_show(gtkconv->sw); |
3481 | |
3482 /* Setup gtkihmtml. */ | |
3483 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
3484 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
3485 | |
3486 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3487 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
4359 | 3488 |
3489 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
3490 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
8105 | 3491 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
6057 | 3492 G_CALLBACK(refocus_entry_cb), gtkconv); |
8109 | 3493 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
3494 G_CALLBACK(refocus_entry_cb), gtkconv); | |
4359 | 3495 |
3496 gaim_setup_imhtml(gtkconv->imhtml); | |
3497 | |
3498 gtk_widget_show(gtkconv->imhtml); | |
3499 | |
3500 /* Build the right pane. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3501 lbox = gtk_vbox_new(FALSE, 6); |
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3502 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); |
4359 | 3503 gtk_widget_show(lbox); |
3504 | |
3505 /* Setup the label telling how many people are in the room. */ | |
3506 gtkchat->count = gtk_label_new(_("0 people in room")); | |
3507 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0); | |
3508 gtk_widget_show(gtkchat->count); | |
3509 | |
3510 /* Setup the list of users. */ | |
7949 | 3511 sw = gtk_scrolled_window_new(NULL, NULL); |
3512 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
8076 | 3513 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
7949 | 3514 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
3515 gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0); | |
3516 gtk_widget_show(sw); | |
4359 | 3517 |
3518 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
3519 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
3520 GTK_SORT_ASCENDING); | |
3521 | |
3522 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls)); | |
3523 | |
3524 rend = gtk_cell_renderer_text_new(); | |
3525 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
3526 "text", 0, NULL); | |
3527 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
3528 | |
3529 g_signal_connect(G_OBJECT(list), "button_press_event", | |
3530 G_CALLBACK(right_click_chat_cb), conv); | |
8143 | 3531 g_signal_connect(G_OBJECT(list), "popup-menu", |
3532 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv); | |
4359 | 3533 |
3534 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
3535 | |
3536 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
3537 "text", 1, NULL); | |
3538 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
3539 | |
3540 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
3541 | |
3542 gtk_widget_set_size_request(list, 150, -1); | |
3543 | |
3544 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE); | |
3545 gtk_widget_show(list); | |
3546 | |
3547 gtkchat->list = list; | |
3548 | |
7949 | 3549 gtk_container_add(GTK_CONTAINER(sw), list); |
4359 | 3550 |
3551 /* Setup the user list toolbar. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3552 bbox = gtk_hbox_new(TRUE, 6); |
4359 | 3553 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0); |
3554 gtk_widget_show(bbox); | |
3555 | |
3556 /* IM */ | |
3557 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO, | |
3558 GAIM_BUTTON_VERTICAL); | |
3559 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
3560 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
|
3561 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL); |
4359 | 3562 g_signal_connect(G_OBJECT(button), "clicked", |
7961 | 3563 G_CALLBACK(chat_im_button_cb), conv); |
4359 | 3564 |
3565 gtk_widget_show(button); | |
3566 | |
3567 /* Ignore */ | |
3568 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE, | |
3569 GAIM_BUTTON_VERTICAL); | |
3570 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
3571 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
|
3572 gtk_tooltips_set_tip(gtkconv->tooltips, button, |
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3573 _("Ignore the user"), NULL); |
4359 | 3574 g_signal_connect(G_OBJECT(button), "clicked", |
3575 G_CALLBACK(ignore_cb), conv); | |
3576 gtk_widget_show(button); | |
3577 | |
3578 /* Info */ | |
3579 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO, | |
3580 GAIM_BUTTON_VERTICAL); | |
3581 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
3582 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
3583 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3584 _("Get the user's information"), NULL); |
4359 | 3585 g_signal_connect(G_OBJECT(button), "clicked", |
3586 G_CALLBACK(info_cb), conv); | |
3587 | |
3588 gtk_widget_show(button); | |
3589 | |
3590 gtkconv->info = button; | |
3591 | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3592 /* Build the toolbar. */ |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3593 vbox = gtk_vbox_new(FALSE, 6); |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3594 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE); |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3595 gtk_widget_show(vbox); |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3596 |
8317 | 3597 gtkconv->toolbar = gtk_imhtmltoolbar_new(); |
3598 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar, FALSE, FALSE, 0); | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3599 |
8123 | 3600 /* Setup the entry widget. |
3601 * We never show the horizontal scrollbar because it was causing weird | |
3602 * lockups when typing text just as you type the character that would | |
3603 * cause both scrollbars to appear. Definitely seems like a gtk bug. | |
3604 */ | |
7949 | 3605 sw = gtk_scrolled_window_new(NULL, NULL); |
3606 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
8112 | 3607 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
8061 | 3608 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
3609 GTK_SHADOW_IN); | |
7949 | 3610 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
3611 gtk_widget_show(sw); | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3612 |
8061 | 3613 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
3614 gtkconv->entry_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
3615 gaim_setup_imhtml(gtkconv->entry); | |
3616 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
3617 default_formatize(conv); | |
5105 | 3618 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
|
3619 gtk_widget_set_size_request(gtkconv->entry, -1, |
8106 | 3620 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height")); |
7949 | 3621 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
3622 | |
3623 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | |
8105 | 3624 G_CALLBACK(entry_key_press_cb), conv); |
4359 | 3625 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
3626 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
3627 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3628 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3629 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
8317 | 3630 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gtkconv->entry); |
4359 | 3631 |
7949 | 3632 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); |
4359 | 3633 gtk_widget_show(gtkconv->entry); |
3634 | |
3635 /* Setup the bottom button box. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3636 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
4359 | 3637 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0); |
3638 gtk_widget_show(gtkconv->bbox); | |
3639 | |
3640 setup_chat_buttons(conv, gtkconv->bbox); | |
3641 | |
8143 | 3642 focus_chain = g_list_prepend (NULL, sw); |
3643 gtk_container_set_focus_chain (GTK_CONTAINER(vbox), focus_chain); | |
4359 | 3644 return vpaned; |
3645 } | |
3646 | |
3647 static GtkWidget * | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3648 setup_im_pane(GaimConversation *conv) |
4359 | 3649 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3650 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3651 GaimGtkImPane *gtkim; |
4359 | 3652 GtkWidget *paned; |
3653 GtkWidget *vbox; | |
3654 GtkWidget *vbox2; | |
7949 | 3655 GtkWidget *sw; |
8143 | 3656 GList *focus_chain; |
4359 | 3657 |
3658 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3659 gtkim = gtkconv->u.im; | |
3660 | |
3661 /* Setup the outer pane. */ | |
3662 paned = gtk_vpaned_new(); | |
3663 gtk_widget_show(paned); | |
3664 | |
3665 /* Setup the top part of the pane. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3666 vbox = gtk_vbox_new(FALSE, 6); |
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3667 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
4359 | 3668 gtk_widget_show(vbox); |
3669 | |
3670 /* Setup the gtkimhtml widget. */ | |
3671 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
3672 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
8076 | 3673 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
4359 | 3674 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), |
3675 GTK_SHADOW_IN); | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3676 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0); |
4851 | 3677 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3678 gtk_widget_set_size_request(gtkconv->sw, |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3679 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3680 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); |
4359 | 3681 gtk_widget_show(gtkconv->sw); |
3682 | |
3683 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
3684 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
3685 | |
3686 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
3687 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
8105 | 3688 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
6057 | 3689 G_CALLBACK(refocus_entry_cb), gtkconv); |
8109 | 3690 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
3691 G_CALLBACK(refocus_entry_cb), gtkconv); | |
4359 | 3692 |
3693 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3694 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
4359 | 3695 |
3696 gaim_setup_imhtml(gtkconv->imhtml); | |
3697 gtk_widget_show(gtkconv->imhtml); | |
3698 | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3699 vbox2 = gtk_vbox_new(FALSE, 6); |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3700 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE); |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3701 gtk_widget_show(vbox2); |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3702 |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3703 /* Build the toolbar. */ |
8317 | 3704 gtkconv->toolbar = gtk_imhtmltoolbar_new(); |
3705 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar, FALSE, FALSE, 0); | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3706 |
8123 | 3707 /* Setup the entry widget. |
3708 * We never show the horizontal scrollbar because it was causing weird | |
3709 * lockups when typing text just as you type the character that would | |
3710 * cause both scrollbars to appear. Definitely seems like a gtk bug. | |
3711 */ | |
7949 | 3712 sw = gtk_scrolled_window_new(NULL, NULL); |
3713 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
8112 | 3714 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
8061 | 3715 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
3716 GTK_SHADOW_IN); | |
7949 | 3717 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0); |
3718 gtk_widget_show(sw); | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3719 |
8061 | 3720 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
3721 gtkconv->entry_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
3722 gaim_setup_imhtml(gtkconv->entry); | |
3723 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
3724 default_formatize(conv); | |
5105 | 3725 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
|
3726 gtk_widget_set_size_request(gtkconv->entry, -1, |
8106 | 3727 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height")); |
7949 | 3728 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3729 |
4359 | 3730 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", |
8105 | 3731 G_CALLBACK(entry_key_press_cb), conv); |
4359 | 3732 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
3733 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
3734 | |
3735 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", | |
3736 G_CALLBACK(insert_text_cb), conv); | |
3737 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", | |
3738 G_CALLBACK(delete_text_cb), conv); | |
3739 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3740 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3741 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
4359 | 3742 |
7949 | 3743 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); |
4359 | 3744 gtk_widget_show(gtkconv->entry); |
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
3745 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), |
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
3746 gtkconv->entry); |
4359 | 3747 |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3748 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
4359 | 3749 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0); |
3750 gtk_widget_show(gtkconv->bbox); | |
3751 | |
3752 setup_im_buttons(conv, gtkconv->bbox); | |
3753 | |
8143 | 3754 focus_chain = g_list_prepend (NULL, sw); |
3755 gtk_container_set_focus_chain (GTK_CONTAINER(vbox2), focus_chain); | |
3756 | |
4359 | 3757 return paned; |
3758 } | |
3759 | |
3760 static void | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3761 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
|
3762 GtkSelectionData *sd, guint info, guint t, |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3763 GaimConversation *conv) |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3764 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3765 GaimConvWindow *win = conv->window; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3766 GaimConversation *c; |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3767 |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3768 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3769 { |
4781 | 3770 GaimBlistNode *n = NULL; |
6695 | 3771 GaimBuddy *b; |
4781 | 3772 memcpy(&n, sd->data, sizeof(n)); |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3773 |
6695 | 3774 if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
3775 b = gaim_contact_get_priority_buddy((GaimContact*)n); | |
3776 else if (GAIM_BLIST_NODE_IS_BUDDY(n)) | |
3777 b = (GaimBuddy*)n; | |
3778 else | |
4781 | 3779 return; |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3780 |
7089
2cd3756a637b
[gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
3781 c = gaim_conversation_new(GAIM_CONV_IM, b->account, b->name); |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3782 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3783 gaim_conv_window_add_conversation(win, c); |
4702 | 3784 } |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3785 else if (sd->target == gdk_atom_intern("application/x-im-contact", FALSE)) |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3786 { |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3787 char *protocol = NULL; |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3788 char *username = NULL; |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3789 GaimAccount *account; |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3790 |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3791 if (gaim_gtk_parse_x_im_contact(sd->data, FALSE, &account, |
7718 | 3792 &protocol, &username, NULL)) |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3793 { |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3794 if (account == NULL) |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3795 { |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3796 gaim_notify_error(NULL, NULL, |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3797 _("You are not currently signed on with an account that " |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3798 "can add that buddy."), NULL); |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3799 } |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3800 else |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3801 { |
7718 | 3802 c = gaim_conversation_new(GAIM_CONV_IM, account, username); |
3803 gaim_conv_window_add_conversation(win, c); | |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3804 } |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3805 } |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3806 |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3807 if (username != NULL) g_free(username); |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3808 if (protocol != NULL) g_free(protocol); |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3809 |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3810 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3811 } |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3812 } |
4359 | 3813 |
3814 /************************************************************************** | |
3815 * GTK+ window ops | |
3816 **************************************************************************/ | |
3817 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3818 gaim_gtk_new_window(GaimConvWindow *win) |
4359 | 3819 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3820 GaimGtkWindow *gtkwin; |
4359 | 3821 GtkPositionType pos; |
3822 GtkWidget *testidea; | |
3823 GtkWidget *menubar; | |
3824 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3825 gtkwin = g_malloc0(sizeof(GaimGtkWindow)); |
4359 | 3826 |
3827 win->ui_data = gtkwin; | |
3828 | |
3829 /* Create the window. */ | |
3830 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
3831 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation"); | |
4635 | 3832 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE); |
4510
4c394222c732
[gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents:
4505
diff
changeset
|
3833 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0); |
5173 | 3834 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE; |
4359 | 3835 gtk_widget_realize(gtkwin->window); |
3836 | |
3837 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event", | |
3838 G_CALLBACK(close_win_cb), win); | |
3839 | |
3840 /* Create the notebook. */ | |
3841 gtkwin->notebook = gtk_notebook_new(); | |
3842 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3843 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side"); |
4359 | 3844 |
3845 #if 0 | |
3846 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
3847 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
3848 #endif | |
3849 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); | |
3850 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE); | |
3851 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook)); | |
4818 | 3852 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE); |
3853 | |
4359 | 3854 gtk_widget_show(gtkwin->notebook); |
3855 | |
8189 | 3856 g_signal_connect(G_OBJECT(gtkwin->notebook), "switch_page", |
3857 G_CALLBACK(before_switch_conv_cb), win); | |
4359 | 3858 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page", |
3859 G_CALLBACK(switch_conv_cb), win); | |
3860 | |
3861 /* Setup the tab drag and drop signals. */ | |
4486 | 3862 gtk_widget_add_events(gtkwin->notebook, |
3863 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); | |
3864 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event", | |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3865 G_CALLBACK(notebook_press_cb), win); |
4486 | 3866 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event", |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3867 G_CALLBACK(notebook_release_cb), win); |
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3868 |
4359 | 3869 testidea = gtk_vbox_new(FALSE, 0); |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3870 |
4359 | 3871 /* Setup the menubar. */ |
3872 menubar = setup_menubar(win); | |
3873 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0); | |
3874 | |
3875 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0); | |
3876 | |
3877 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea); | |
3878 | |
3879 gtk_widget_show(testidea); | |
3880 } | |
3881 | |
3882 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3883 gaim_gtk_destroy_window(GaimConvWindow *win) |
4359 | 3884 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3885 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3886 |
3887 gtk_widget_destroy(gtkwin->window); | |
3888 | |
4630 | 3889 g_object_unref(G_OBJECT(gtkwin->menu.item_factory)); |
3890 | |
4359 | 3891 g_free(gtkwin); |
3892 win->ui_data = NULL; | |
3893 } | |
3894 | |
3895 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3896 gaim_gtk_show(GaimConvWindow *win) |
4359 | 3897 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3898 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3899 |
3900 gtk_widget_show(gtkwin->window); | |
7413 | 3901 |
3902 #ifdef _WIN32 | |
7415 | 3903 /* This works around a win32 gtk+ bug, where it can't handle |
3904 * creating the button correctly before the window is shown. | |
3905 * That's why we get the appearance of a button, without all | |
3906 * the normal button-like properties, like being able to click | |
7413 | 3907 * it. ;-) --Nathan */ |
7414 | 3908 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) { |
3909 GaimConversation *conv; | |
3910 GaimGtkConversation *gtkconv; | |
3911 | |
3912 conv = gaim_conv_window_get_conversation_at(win, 0); | |
3913 if(conv) { | |
3914 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
7415 | 3915 gtk_widget_hide(gtkconv->close); |
7414 | 3916 gtk_widget_show_all(gtkconv->close); |
3917 } | |
3918 } | |
7413 | 3919 #endif |
4359 | 3920 } |
3921 | |
3922 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3923 gaim_gtk_hide(GaimConvWindow *win) |
4359 | 3924 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3925 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3926 |
3927 gtk_widget_hide(gtkwin->window); | |
3928 } | |
3929 | |
3930 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3931 gaim_gtk_raise(GaimConvWindow *win) |
4359 | 3932 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3933 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3934 |
5484 | 3935 gtk_widget_show(gtkwin->window); |
5103 | 3936 gtk_window_deiconify(GTK_WINDOW(gtkwin->window)); |
4526 | 3937 gdk_window_raise(gtkwin->window->window); |
4359 | 3938 } |
3939 | |
3940 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3941 gaim_gtk_flash(GaimConvWindow *win) |
4359 | 3942 { |
3943 #ifdef _WIN32 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3944 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3945 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3946 wgaim_conv_im_blink(gtkwin->window); |
4359 | 3947 #endif |
3948 } | |
3949 | |
3950 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3951 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index) |
4359 | 3952 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3953 GaimGtkWindow *gtkwin; |
4359 | 3954 |
3955 gtkwin = GAIM_GTK_WINDOW(win); | |
3956 | |
3957 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
3958 } | |
3959 | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3960 static const GtkTargetEntry te[] = |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3961 { |
7695 | 3962 {"text/plain", 0, 0}, |
3963 {"text/uri-list", 0, 1}, | |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3964 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 2}, |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3965 {"STRING", 0, 3}, |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3966 {"application/x-im-contact", 0, 4} |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3967 }; |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3968 |
4359 | 3969 static void |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3970 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv) |
4359 | 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, *focus_gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3974 GaimConversation *focus_conv; |
4359 | 3975 GtkWidget *pane = NULL; |
3976 GtkWidget *tab_cont; | |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3977 GtkWidget *tabby, *menu_tabby; |
4359 | 3978 gboolean new_ui; |
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3979 GaimConversationType conv_type; |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3980 const char *name; |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3981 |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3982 name = gaim_conversation_get_name(conv); |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3983 conv_type = gaim_conversation_get_type(conv); |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3984 gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3985 |
3986 if (conv->ui_data != NULL) { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3987 gtkconv = (GaimGtkConversation *)conv->ui_data; |
4359 | 3988 |
3989 tab_cont = gtkconv->tab_cont; | |
3990 | |
3991 new_ui = FALSE; | |
3992 } | |
3993 else { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3994 gtkconv = g_malloc0(sizeof(GaimGtkConversation)); |
4359 | 3995 conv->ui_data = gtkconv; |
3996 | |
3997 /* Setup some initial variables. */ | |
3998 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
3999 gtkconv->tooltips = gtk_tooltips_new(); | |
4000 | |
4421 | 4001 /* Setup the foreground and background colors */ |
4002 gaim_gtkconv_update_font_colors(conv); | |
4003 | |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4004 /* Setup the font face */ |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4005 gaim_gtkconv_update_font_face(conv); |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4006 |
7879 | 4007 if (conv_type == GAIM_CONV_IM) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4008 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane)); |
4359 | 4009 gtkconv->u.im->a_virgin = TRUE; |
4010 | |
4011 pane = setup_im_pane(conv); | |
4012 } | |
7879 | 4013 else if (conv_type == GAIM_CONV_CHAT) { |
4014 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane)); | |
4015 | |
4016 pane = setup_chat_pane(conv); | |
4017 } | |
4359 | 4018 |
4019 if (pane == NULL) { | |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4020 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat); |
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4021 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im); |
4359 | 4022 |
4023 g_free(gtkconv); | |
4024 conv->ui_data = NULL; | |
4025 | |
4026 return; | |
4027 } | |
4028 | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4029 /* Setup drag-and-drop */ |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4030 gtk_drag_dest_set(pane, |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4031 GTK_DEST_DEFAULT_MOTION | |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4032 GTK_DEST_DEFAULT_DROP, |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4033 te, sizeof(te) / sizeof(GtkTargetEntry), |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4034 GDK_ACTION_COPY); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4035 gtk_drag_dest_set(gtkconv->imhtml, |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4036 GTK_DEST_DEFAULT_MOTION | |
4702 | 4037 GTK_DEST_DEFAULT_DROP, |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4038 te, sizeof(te) / sizeof(GtkTargetEntry), |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4039 GDK_ACTION_DEFAULT | GDK_ACTION_COPY | GDK_ACTION_MOVE); |
7695 | 4040 gtk_drag_dest_set(gtkconv->entry, |
4041 GTK_DEST_DEFAULT_MOTION | | |
4042 GTK_DEST_DEFAULT_DROP, | |
4043 te, sizeof(te) / sizeof(GtkTargetEntry), | |
4044 GDK_ACTION_COPY); | |
4045 | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4046 g_signal_connect(G_OBJECT(pane), "drag_data_received", |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4047 G_CALLBACK(conv_dnd_recv), conv); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4048 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4049 G_CALLBACK(conv_dnd_recv), conv); |
8105 | 4050 #if 0 |
4051 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", | |
4052 G_CALLBACK(conv_dnd_recv), conv); | |
4053 #endif | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4054 |
4359 | 4055 /* Setup the container for the tab. */ |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4056 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 6); |
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4057 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 6); |
4359 | 4058 gtk_container_add(GTK_CONTAINER(tab_cont), pane); |
4059 gtk_widget_show(pane); | |
4060 | |
4061 new_ui = TRUE; | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4062 |
4359 | 4063 gtkconv->make_sound = TRUE; |
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
4064 |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4065 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool( |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4066 "/gaim/gtk/conversations/show_formatting_toolbar"); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4067 |
8176 | 4068 g_signal_connect_swapped(G_OBJECT(pane), "focus", |
4069 G_CALLBACK(gtk_widget_grab_focus), | |
4070 gtkconv->entry); | |
4359 | 4071 } |
4072 | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4073 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 6); |
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4074 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 6); |
4359 | 4075 |
4076 /* Close button. */ | |
4077 gtkconv->close = gtk_button_new(); | |
4078 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16); | |
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4079 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE); |
4359 | 4080 gtk_container_add(GTK_CONTAINER(gtkconv->close), |
4445 | 4081 gtk_image_new_from_stock(GTK_STOCK_CLOSE, |
4082 GTK_ICON_SIZE_MENU)); | |
4359 | 4083 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4084 _("Close conversation"), NULL); |
4359 | 4085 |
4086 g_signal_connect(G_OBJECT(gtkconv->close), "clicked", | |
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4087 G_CALLBACK(close_conv_cb), conv); |
4359 | 4088 |
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4089 /* |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4090 * I love Galeon. They have a fix for that stupid annoying visible |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4091 * border bug. I love you guys! -- ChipX86 |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4092 */ |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4093 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed", |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4094 G_CALLBACK(tab_close_button_state_changed_cb), NULL); |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4095 |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4096 /* Status icon. */ |
6440 | 4097 gtkconv->icon = gtk_image_new(); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4098 gtkconv->menu_icon = gtk_image_new(); |
6440 | 4099 update_tab_icon(conv); |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4100 |
4359 | 4101 /* Tab label. */ |
4102 gtkconv->tab_label = gtk_label_new(gaim_conversation_get_title(conv)); | |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4103 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); |
4359 | 4104 #if 0 |
4105 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); | |
4106 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); | |
4107 #endif | |
4108 | |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
4109 |
4359 | 4110 /* Pack it all together. */ |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4111 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4112 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, FALSE, FALSE, 0); |
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4113 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) { |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4114 gtk_widget_show_all(gtkconv->icon); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4115 gtk_widget_show_all(gtkconv->menu_icon); |
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4116 } |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4117 |
4359 | 4118 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4119 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); |
4445 | 4120 gtk_widget_show(gtkconv->tab_label); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4121 gtk_widget_show(gtkconv->menu_label); |
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4122 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0); |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4123 |
4445 | 4124 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
|
4125 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) |
4445 | 4126 gtk_widget_show_all(gtkconv->close); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4127 |
4445 | 4128 gtk_widget_show(tabby); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4129 gtk_widget_show(menu_tabby); |
4359 | 4130 |
7143 | 4131 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
4132 gaim_gtkconv_update_buddy_icon(conv); | |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4133 |
4359 | 4134 /* Add this pane to the conversations notebook. */ |
4135 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby); | |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4136 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, menu_tabby); |
4359 | 4137 |
4138 gtk_widget_show(tab_cont); | |
4139 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4140 if (gaim_conv_window_get_conversation_count(win) == 1) { |
4818 | 4141 /* Er, bug in notebooks? Switch to the page manually. */ |
4359 | 4142 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0); |
4851 | 4143 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4144 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4145 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4146 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4147 else |
4818 | 4148 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE); |
4359 | 4149 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4150 focus_conv = g_list_nth_data(gaim_conv_window_get_conversations(win), |
5204 | 4151 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook))); |
4152 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv); | |
4153 gtk_widget_grab_focus(focus_gtkconv->entry); | |
4359 | 4154 |
4155 if (!new_ui) | |
4156 g_object_unref(gtkconv->tab_cont); | |
4157 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4158 if (gaim_conv_window_get_conversation_count(win) == 1) |
4685 | 4159 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
4359 | 4160 } |
4161 | |
4162 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4163 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv) |
4359 | 4164 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4165 GaimGtkWindow *gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4166 GaimGtkConversation *gtkconv; |
4359 | 4167 unsigned int index; |
4818 | 4168 GaimConversationType conv_type; |
4169 | |
4170 conv_type = gaim_conversation_get_type(conv); | |
4359 | 4171 index = gaim_conversation_get_index(conv); |
4172 | |
4173 gtkwin = GAIM_GTK_WINDOW(win); | |
4174 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4175 | |
4176 g_object_ref(gtkconv->tab_cont); | |
4177 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont)); | |
4178 | |
4179 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
4180 | |
4818 | 4181 /* go back to tabless if need be */ |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4182 if (gaim_conv_window_get_conversation_count(win) <= 2) { |
4818 | 4183 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4184 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
4818 | 4185 } |
4186 | |
4187 | |
4359 | 4188 /* If this window is setup with an inactive gc, regenerate the menu. */ |
4818 | 4189 if (conv_type == GAIM_CONV_IM && |
4359 | 4190 gaim_conversation_get_gc(conv) == NULL) { |
4191 | |
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
4192 generate_send_as_items(win, conv); |
4359 | 4193 } |
4194 } | |
4195 | |
4196 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4197 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv, |
4359 | 4198 unsigned int new_index) |
4199 { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4200 GaimGtkWindow *gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4201 GaimGtkConversation *gtkconv; |
4359 | 4202 |
4203 gtkwin = GAIM_GTK_WINDOW(win); | |
4204 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4205 | |
4415
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4206 if (new_index > gaim_conversation_get_index(conv)) |
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4207 new_index--; |
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4208 |
4359 | 4209 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook), |
4210 gtkconv->tab_cont, new_index); | |
4211 } | |
4212 | |
4213 static int | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4214 gaim_gtk_get_active_index(const GaimConvWindow *win) |
4359 | 4215 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4216 GaimGtkWindow *gtkwin; |
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4217 int index; |
4359 | 4218 |
4219 gtkwin = GAIM_GTK_WINDOW(win); | |
4220 | |
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4221 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)); |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4222 |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4223 /* |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4224 * A fix, because the first conversation may be active, but not |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4225 * appear in the notebook just yet. -- ChipX86 |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4226 */ |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4227 return (index == -1 ? 0 : index); |
4359 | 4228 } |
4229 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4230 static GaimConvWindowUiOps window_ui_ops = |
4359 | 4231 { |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4232 gaim_gtk_conversations_get_conv_ui_ops, |
4359 | 4233 gaim_gtk_new_window, |
4234 gaim_gtk_destroy_window, | |
4235 gaim_gtk_show, | |
4236 gaim_gtk_hide, | |
4237 gaim_gtk_raise, | |
4238 gaim_gtk_flash, | |
4239 gaim_gtk_switch_conversation, | |
4240 gaim_gtk_add_conversation, | |
4241 gaim_gtk_remove_conversation, | |
4242 gaim_gtk_move_conversation, | |
4243 gaim_gtk_get_active_index | |
4244 }; | |
4245 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4246 GaimConvWindowUiOps * |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4247 gaim_gtk_conversations_get_win_ui_ops(void) |
4359 | 4248 { |
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4249 return &window_ui_ops; |
4359 | 4250 } |
4251 | |
4252 /************************************************************************** | |
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4253 * Conversation UI operations |
4359 | 4254 **************************************************************************/ |
4255 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4256 gaim_gtkconv_destroy(GaimConversation *conv) |
4359 | 4257 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4258 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
4359 | 4259 |
8317 | 4260 /* if (gtkconv->dialogs.fg_color != NULL) |
4359 | 4261 gtk_widget_destroy(gtkconv->dialogs.fg_color); |
4262 | |
4263 if (gtkconv->dialogs.bg_color != NULL) | |
4264 gtk_widget_destroy(gtkconv->dialogs.bg_color); | |
4265 | |
4266 if (gtkconv->dialogs.font != NULL) | |
4267 gtk_widget_destroy(gtkconv->dialogs.font); | |
4268 | |
5959 | 4269 if (gtkconv->dialogs.image != NULL) |
4270 gtk_widget_destroy(gtkconv->dialogs.image); | |
4271 | |
4359 | 4272 if (gtkconv->dialogs.smiley != NULL) |
4273 gtk_widget_destroy(gtkconv->dialogs.smiley); | |
8317 | 4274 */ |
4275 //if (gtkconv->dialogs.link != NULL) | |
4276 // close_link_dialog(conv); | |
4359 | 4277 |
4278 if (gtkconv->dialogs.log != NULL) | |
4279 gtk_widget_destroy(gtkconv->dialogs.log); | |
4280 | |
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4281 gtk_widget_destroy(gtkconv->tab_cont); |
4892 | 4282 g_object_unref(gtkconv->tab_cont); |
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4283 |
4359 | 4284 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
4755 | 4285 if (gtkconv->u.im->icon_timer != 0) |
4286 g_source_remove(gtkconv->u.im->icon_timer); | |
4287 | |
4359 | 4288 if (gtkconv->u.im->save_icon != NULL) |
4289 gtk_widget_destroy(gtkconv->u.im->save_icon); | |
4290 | |
4291 if (gtkconv->u.im->anim != NULL) | |
4793 | 4292 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
4359 | 4293 |
4294 g_free(gtkconv->u.im); | |
4295 } | |
4296 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
4297 g_free(gtkconv->u.chat); | |
4298 } | |
4299 | |
4633 | 4300 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips)); |
4301 | |
4359 | 4302 g_free(gtkconv); |
4303 } | |
4304 | |
4305 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4306 gaim_gtkconv_write_im(GaimConversation *conv, const char *who, |
6982 | 4307 const char *message, GaimMessageFlags flags, |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4308 time_t mtime) |
4359 | 4309 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4310 GaimGtkConversation *gtkconv; |
4359 | 4311 |
4312 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4313 | |
6621 | 4314 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4315 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4316 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4317 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4318 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4319 |
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4320 /* Play a sound, if specified in prefs. */ |
4359 | 4321 if (gtkconv->make_sound) { |
6621 | 4322 if (flags & GAIM_MESSAGE_RECV) { |
4359 | 4323 if (gtkconv->u.im->a_virgin && |
5820 | 4324 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) { |
4359 | 4325 |
4561 | 4326 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE); |
4359 | 4327 } |
4328 else | |
4561 | 4329 gaim_sound_play_event(GAIM_SOUND_RECEIVE); |
4359 | 4330 } |
4331 else { | |
4561 | 4332 gaim_sound_play_event(GAIM_SOUND_SEND); |
4359 | 4333 } |
4334 } | |
4335 | |
4336 gtkconv->u.im->a_virgin = FALSE; | |
4337 | |
6982 | 4338 gaim_conversation_write(conv, who, message, flags, mtime); |
4359 | 4339 } |
4340 | |
4341 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4342 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who, |
6621 | 4343 const char *message, GaimMessageFlags flags, time_t mtime) |
4359 | 4344 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4345 GaimGtkConversation *gtkconv; |
4359 | 4346 |
4347 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4348 | |
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4349 /* Play a sound, if specified in prefs. */ |
4359 | 4350 if (gtkconv->make_sound) { |
6621 | 4351 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND)) |
4561 | 4352 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY); |
6621 | 4353 else if (flags & GAIM_MESSAGE_RECV) { |
4354 if ((flags & GAIM_MESSAGE_NICK) && | |
6102 | 4355 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) { |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4356 |
4561 | 4357 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4358 } |
4359 | 4359 else |
4561 | 4360 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY); |
4359 | 4361 } |
4362 } | |
4363 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4364 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks")) |
6621 | 4365 flags |= GAIM_MESSAGE_COLORIZE; |
4359 | 4366 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4367 /* Raise the window, if specified in prefs. */ |
6621 | 4368 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4369 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4370 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4371 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4372 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4373 |
6982 | 4374 gaim_conversation_write(conv, who, message, flags, mtime); |
4359 | 4375 } |
4376 | |
4377 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4378 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who, |
6982 | 4379 const char *message, GaimMessageFlags flags, |
4359 | 4380 time_t mtime) |
4381 { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4382 GaimGtkConversation *gtkconv; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4383 GaimConvWindow *win; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4384 GaimConnection *gc; |
4359 | 4385 int gtk_font_options = 0; |
6982 | 4386 GSList *images = NULL; |
7440 | 4387 char buf[BUF_LONG]; |
4359 | 4388 char buf2[BUF_LONG]; |
4389 char mdate[64]; | |
4390 char color[10]; | |
4391 char *str; | |
4392 char *with_font_tag; | |
4896 | 4393 char *sml_attrib = NULL; |
6982 | 4394 size_t length = strlen(message) + 1; |
4895 | 4395 |
4359 | 4396 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4397 gc = gaim_conversation_get_gc(conv); | |
4398 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4399 win = gaim_conversation_get_window(conv); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4400 |
6621 | 4401 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
7431 | 4402 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
4403 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) || | |
4404 (gaim_conversation_get_type(conv) == GAIM_CONV_IM && | |
4405 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") || | |
4406 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
|
4407 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4408 gaim_conv_window_show(win); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4409 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4410 |
7078 | 4411 if (flags & GAIM_MESSAGE_IMAGES) |
4412 gaim_gtk_find_images(message, &images); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4413 |
5133 | 4414 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */ |
4415 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime)); | |
4416 else | |
4417 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); | |
4359 | 4418 |
4896 | 4419 if(gc) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4420 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name); |
7440 | 4421 |
4359 | 4422 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS; |
4423 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4424 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors")) |
4359 | 4425 gtk_font_options ^= GTK_IMHTML_NO_COLOURS; |
4426 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4427 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts")) |
4359 | 4428 gtk_font_options ^= GTK_IMHTML_NO_FONTS; |
4429 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4430 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes")) |
4359 | 4431 gtk_font_options ^= GTK_IMHTML_NO_SIZES; |
4432 | |
7956 | 4433 /* this is gonna crash one day, I can feel it. */ |
4434 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(conv->account)))->options & | |
7431 | 4435 OPT_PROTO_USE_POINTSIZE) { |
5367 | 4436 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4437 } |
4359 | 4438 |
6621 | 4439 if (flags & GAIM_MESSAGE_SYSTEM) { |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4440 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
5329 | 4441 g_snprintf(buf, BUF_LONG, "(%s) <B>%s</B>", |
7431 | 4442 mdate, message); |
4359 | 4443 else |
4444 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message); | |
7440 | 4445 |
4359 | 4446 g_snprintf(buf2, sizeof(buf2), |
7850 | 4447 "<FONT %s><!--(%s) --><B>%s</B></FONT><BR>", |
4448 sml_attrib, mdate, message); | |
7440 | 4449 |
6982 | 4450 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images); |
7440 | 4451 |
7583 | 4452 /* Add the message to a conversations scrollback buffer */ |
4453 conv->history = g_string_append(conv->history, buf); | |
4454 conv->history = g_string_append(conv->history, "<BR>\n"); | |
7440 | 4455 |
7431 | 4456 } else if (flags & GAIM_MESSAGE_NO_LOG) { |
4359 | 4457 g_snprintf(buf, BUF_LONG, |
7850 | 4458 "<B><FONT %s COLOR=\"#777777\">%s</FONT></B><BR>", |
4459 sml_attrib, message); | |
7440 | 4460 |
6982 | 4461 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf, 0, images); |
4359 | 4462 } |
4463 else { | |
4895 | 4464 char *new_message = g_memdup(message, length); |
7440 | 4465 |
6621 | 4466 if (flags & GAIM_MESSAGE_WHISPER) { |
4359 | 4467 str = g_malloc(1024); |
7440 | 4468 |
4359 | 4469 /* If we're whispering, it's not an autoresponse. */ |
7564 | 4470 if (gaim_message_meify(new_message, length)) { |
4359 | 4471 g_snprintf(str, 1024, "***%s", who); |
4472 strcpy(color, "#6C2585"); | |
4473 } | |
4474 else { | |
4475 g_snprintf(str, 1024, "*%s*:", who); | |
4476 strcpy(color, "#00FF00"); | |
4477 } | |
7440 | 4478 } |
4359 | 4479 else { |
7564 | 4480 if (gaim_message_meify(new_message, length)) { |
4359 | 4481 str = g_malloc(1024); |
7440 | 4482 |
6621 | 4483 if (flags & GAIM_MESSAGE_AUTO_RESP) |
4359 | 4484 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who); |
4485 else | |
4486 g_snprintf(str, 1024, "***%s", who); | |
7440 | 4487 |
6621 | 4488 if (flags & GAIM_MESSAGE_NICK) |
4359 | 4489 strcpy(color, "#AF7F00"); |
4490 else | |
4491 strcpy(color, "#062585"); | |
4492 } | |
4493 else { | |
4494 str = g_malloc(1024); | |
6621 | 4495 if (flags & GAIM_MESSAGE_AUTO_RESP) |
4359 | 4496 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE); |
4497 else | |
4498 g_snprintf(str, 1024, "%s:", who); | |
6621 | 4499 if (flags & GAIM_MESSAGE_NICK) |
4359 | 4500 strcpy(color, "#AF7F00"); |
6621 | 4501 else if (flags & GAIM_MESSAGE_RECV) { |
4502 if (flags & GAIM_MESSAGE_COLORIZE) { | |
4359 | 4503 const char *u; |
4504 int m = 0; | |
7440 | 4505 |
4359 | 4506 for (u = who; *u != '\0'; u++) |
4507 m += *u; | |
7440 | 4508 |
4359 | 4509 m = m % NUM_NICK_COLORS; |
7440 | 4510 |
4359 | 4511 strcpy(color, nick_colors[m]); |
4512 } | |
4513 else | |
7854 | 4514 strcpy(color, RECV_COLOR); |
4359 | 4515 } |
6621 | 4516 else if (flags & GAIM_MESSAGE_SEND) |
7854 | 4517 strcpy(color, SEND_COLOR); |
4359 | 4518 } |
4519 } | |
7440 | 4520 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4521 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
4359 | 4522 g_snprintf(buf, BUF_LONG, |
7431 | 4523 "<FONT COLOR=\"%s\" %s>(%s) " |
4524 "<B>%s</B></FONT> ", color, | |
4525 sml_attrib ? sml_attrib : "", mdate, str); | |
4359 | 4526 else |
4527 g_snprintf(buf, BUF_LONG, | |
7431 | 4528 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color, |
4529 sml_attrib ? sml_attrib : "", str); | |
7440 | 4530 |
4359 | 4531 g_snprintf(buf2, BUF_LONG, |
7431 | 4532 "<FONT COLOR=\"%s\" %s><!--(%s) -->" |
4533 "<B>%s</B></FONT> ", | |
4534 color, sml_attrib ? sml_attrib : "", mdate, str); | |
7440 | 4535 |
4359 | 4536 g_free(str); |
4537 | |
6982 | 4538 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images); |
4359 | 4539 |
4895 | 4540 if(gc){ |
4896 | 4541 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : ""); |
4895 | 4542 char *post = "</font>"; |
4543 int pre_len = strlen(pre); | |
4544 int post_len = strlen(post); | |
7440 | 4545 |
4895 | 4546 with_font_tag = g_malloc(length + pre_len + post_len + 1); |
7440 | 4547 |
4895 | 4548 strcpy(with_font_tag, pre); |
4549 memcpy(with_font_tag + pre_len, new_message, length); | |
4550 strcpy(with_font_tag + pre_len + length, post); | |
7440 | 4551 |
4895 | 4552 length += pre_len + post_len; |
4553 g_free(pre); | |
4554 } | |
4608 | 4555 else |
4895 | 4556 with_font_tag = g_memdup(new_message, length); |
7440 | 4557 |
7589 | 4558 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
7431 | 4559 with_font_tag, gtk_font_options, images); |
7440 | 4560 |
6982 | 4561 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0); |
7440 | 4562 |
7431 | 4563 /*conv->history = g_string_append(conv->history, t1); |
4564 conv->history = g_string_append(conv->history, t2); | |
4565 conv->history = g_string_append(conv->history, "\n"); | |
7440 | 4566 |
7431 | 4567 g_free(t1); |
4568 g_free(t2); */ | |
7440 | 4569 |
4570 g_free(with_font_tag); | |
7447 | 4571 g_free(new_message); |
7440 | 4572 } |
4573 | |
6062 | 4574 |
5012 | 4575 if(sml_attrib) |
4576 g_free(sml_attrib); | |
6982 | 4577 |
4578 if (images) { | |
7078 | 4579 GSList *tmp; |
4580 | |
4581 for (tmp = images; tmp; tmp = tmp->next) { | |
4582 GdkPixbuf *pixbuf = tmp->data; | |
4583 if(pixbuf) | |
4584 g_object_unref(pixbuf); | |
6982 | 4585 } |
7078 | 4586 |
6982 | 4587 g_slist_free(images); |
4588 } | |
4359 | 4589 } |
4590 | |
4591 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4592 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user) |
4359 | 4593 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4594 GaimConvChat *chat; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4595 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4596 GaimGtkChatPane *gtkchat; |
4359 | 4597 char tmp[BUF_LONG]; |
4598 int num_users; | |
4599 int pos; | |
4600 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4601 chat = GAIM_CONV_CHAT(conv); |
4359 | 4602 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4603 gtkchat = gtkconv->u.chat; | |
4604 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4605 num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
4359 | 4606 |
4607 g_snprintf(tmp, sizeof(tmp), | |
4608 ngettext("%d person in room", "%d people in room", | |
4609 num_users), | |
4610 num_users); | |
4611 | |
4612 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
4613 | |
4614 if (gtkconv->make_sound) | |
4561 | 4615 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN); |
4359 | 4616 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4617 pos = g_list_index(gaim_conv_chat_get_users(chat), user); |
4359 | 4618 |
4619 add_chat_buddy_common(conv, user, pos); | |
4620 } | |
4621 | |
4622 static void | |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4623 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4624 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4625 GaimConvChat *chat; |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4626 GaimGtkConversation *gtkconv; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4627 GaimGtkChatPane *gtkchat; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4628 GList *l; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4629 char tmp[BUF_LONG]; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4630 int num_users; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4631 int pos; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4632 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4633 chat = GAIM_CONV_CHAT(conv); |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4634 gtkconv = GAIM_GTK_CONVERSATION(conv); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4635 gtkchat = gtkconv->u.chat; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4636 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4637 num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4638 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4639 g_snprintf(tmp, sizeof(tmp), |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4640 ngettext("%d person in room", "%d people in room", |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4641 num_users), |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4642 num_users); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4643 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4644 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4645 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4646 for (l = users; l != NULL; l = l->next) { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4647 pos = g_list_index(gaim_conv_chat_get_users(chat), (char *)l->data); |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4648 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4649 add_chat_buddy_common(conv, (char *)l->data, pos); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4650 } |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4651 } |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4652 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4653 static void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4654 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name, |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4655 const char *new_name) |
4359 | 4656 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4657 GaimConvChat *chat; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4658 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4659 GaimGtkChatPane *gtkchat; |
4359 | 4660 GtkTreeIter iter; |
4661 GtkTreeModel *model; | |
4662 GList *names; | |
4663 int pos; | |
4664 int f = 1; | |
4665 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4666 chat = GAIM_CONV_CHAT(conv); |
4359 | 4667 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4668 gtkchat = gtkconv->u.chat; | |
4669 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4670 for (names = gaim_conv_chat_get_users(chat); |
4359 | 4671 names != NULL; |
4672 names = names->next) { | |
4673 | |
4674 char *u = (char *)names->data; | |
4675 | |
4793 | 4676 if (!gaim_utf8_strcasecmp(u, old_name)) { |
4359 | 4677 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
4678 | |
4679 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
4680 break; | |
4681 | |
4682 while (f != 0) { | |
4683 char *val; | |
4684 | |
4685 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
4686 | |
4793 | 4687 if (!gaim_utf8_strcasecmp(old_name, val)) { |
4359 | 4688 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
4640 | 4689 break; |
4690 } | |
4359 | 4691 |
4692 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
4693 | |
4694 g_free(val); | |
4695 } | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4696 |
4359 | 4697 break; |
4698 } | |
4699 } | |
4700 | |
4701 if (!names) | |
4702 return; | |
4703 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4704 pos = g_list_index(gaim_conv_chat_get_users(chat), new_name); |
4359 | 4705 |
4706 add_chat_buddy_common(conv, new_name, pos); | |
4707 } | |
4708 | |
4709 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4710 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user) |
4359 | 4711 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4712 GaimConvChat *chat; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4713 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4714 GaimGtkChatPane *gtkchat; |
4359 | 4715 GtkTreeIter iter; |
4716 GtkTreeModel *model; | |
4717 GList *names; | |
4718 char tmp[BUF_LONG]; | |
4719 int num_users; | |
4720 int f = 1; | |
4721 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4722 chat = GAIM_CONV_CHAT(conv); |
4359 | 4723 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4724 gtkchat = gtkconv->u.chat; | |
4725 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4726 num_users = g_list_length(gaim_conv_chat_get_users(chat)) - 1; |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4727 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4728 for (names = gaim_conv_chat_get_users(chat); |
4359 | 4729 names != NULL; |
4730 names = names->next) { | |
4731 | |
4732 char *u = (char *)names->data; | |
4733 | |
4793 | 4734 if (!gaim_utf8_strcasecmp(u, user)) { |
4359 | 4735 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
4736 | |
4737 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
4738 break; | |
4739 | |
4740 while (f != 0) { | |
4741 char *val; | |
4742 | |
4743 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
4744 | |
4793 | 4745 if (!gaim_utf8_strcasecmp(user, val)) |
4359 | 4746 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
4747 | |
4748 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
4749 | |
4750 g_free(val); | |
4751 } | |
4752 | |
4753 break; | |
4754 } | |
4755 } | |
4756 | |
4757 if (names == NULL) | |
4758 return; | |
4759 | |
4760 g_snprintf(tmp, sizeof(tmp), | |
4761 ngettext("%d person in room", "%d people in room", | |
4762 num_users), num_users); | |
4763 | |
4764 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
4765 | |
4766 if (gtkconv->make_sound) | |
4561 | 4767 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE); |
4359 | 4768 } |
4769 | |
4770 static void | |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4771 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4772 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4773 GaimConvChat *chat; |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4774 GaimGtkConversation *gtkconv; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4775 GaimGtkChatPane *gtkchat; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4776 GtkTreeIter iter; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4777 GtkTreeModel *model; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4778 GList *names = NULL; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4779 GList *l; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4780 char tmp[BUF_LONG]; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4781 int num_users; |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4782 gboolean f; |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4783 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4784 chat = GAIM_CONV_CHAT(conv); |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4785 gtkconv = GAIM_GTK_CONVERSATION(conv); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4786 gtkchat = gtkconv->u.chat; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4787 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4788 num_users = g_list_length(gaim_conv_chat_get_users(chat)) - |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4789 g_list_length(users); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4790 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4791 for (l = users; l != NULL; l = l->next) { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4792 for (names = gaim_conv_chat_get_users(chat); |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4793 names != NULL; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4794 names = names->next) { |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4795 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4796 char *u = (char *)names->data; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4797 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4798 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) { |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4799 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4800 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4801 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4802 &iter)) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4803 break; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4804 |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4805 do { |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4806 char *val; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4807 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4808 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4809 1, &val, -1); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4810 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4811 if (!gaim_utf8_strcasecmp((char *)l->data, val)) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4812 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4813 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4814 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4815 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4816 g_free(val); |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4817 } while (f); |
7431 | 4818 |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4819 break; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4820 } |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4821 } |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4822 } |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4823 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4824 if (names == NULL) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4825 return; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4826 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4827 g_snprintf(tmp, sizeof(tmp), |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4828 ngettext("%d person in room", "%d people in room", |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4829 num_users), num_users); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4830 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4831 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4832 } |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4833 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4834 static void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4835 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) |
4359 | 4836 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4837 GaimConvWindow *win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4838 GaimGtkWindow *gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4839 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4840 GaimGtkChatPane *gtkchat; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4841 GaimConvChat *chat; |
4359 | 4842 |
4843 win = gaim_conversation_get_window(conv); | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4844 gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 4845 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4846 | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4847 if (type == GAIM_CONV_UPDATE_ACCOUNT) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4848 { |
4359 | 4849 gaim_conversation_autoset_title(conv); |
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4850 |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4851 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4852 gaim_gtkconv_update_buddy_icon(conv); |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4853 |
4359 | 4854 gaim_gtkconv_update_buttons_by_protocol(conv); |
4855 | |
4685 | 4856 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
4359 | 4857 |
4858 smiley_themeize(gtkconv->imhtml); | |
6394 | 4859 |
6395 | 4860 update_tab_icon(conv); |
4359 | 4861 } |
4862 else if (type == GAIM_CONV_UPDATE_TYPING || | |
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4863 type == GAIM_CONV_UPDATE_UNSEEN || |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4864 type == GAIM_CONV_UPDATE_TITLE) |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4865 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4866 const char *title; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4867 GaimConvIm *im = NULL; |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4868 char color[8]; |
4736 | 4869 |
4359 | 4870 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4871 im = GAIM_CONV_IM(conv); |
4359 | 4872 |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4873 title = gaim_conversation_get_title(conv); |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4874 |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4875 *color = '\0'; |
4359 | 4876 |
4877 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) | |
4878 gtk_widget_realize(gtkconv->tab_label); | |
4879 | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4880 if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4881 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4882 strcpy(color, "#47A046"); |
4359 | 4883 } |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4884 else if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4885 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4886 strcpy(color, "#D1940C"); |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4887 } |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4888 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4889 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4890 strcpy(color, "#314E6C"); |
4359 | 4891 } |
8252 | 4892 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT) |
4893 { | |
4894 strcpy(color, "#DF421E"); | |
4895 } | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4896 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4897 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4898 strcpy(color, "#868272"); |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4899 } |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4900 |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4901 if (*color != '\0') |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4902 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4903 char *label; |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4904 |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4905 label = g_strdup_printf("<span color=\"%s\">%s</span>", |
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4906 color, title); |
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4907 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label); |
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4908 g_free(label); |
4359 | 4909 } |
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4910 else |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4911 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4912 |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4913 if (conv == gaim_conv_window_get_active_conversation(win)) |
4736 | 4914 update_typing_icon(conv); |
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4915 |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4916 if (type == GAIM_CONV_UPDATE_TITLE) { |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4917 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4918 if (conv == gaim_conv_window_get_active_conversation(win)) |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4919 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4920 } |
4359 | 4921 } |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4922 else if (type == GAIM_CONV_UPDATE_TOPIC) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4923 { |
7154 | 4924 const char *topic; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4925 chat = GAIM_CONV_CHAT(conv); |
4359 | 4926 gtkchat = gtkconv->u.chat; |
4927 | |
7154 | 4928 topic = gaim_conv_chat_get_topic(chat); |
4929 | |
4930 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),topic); | |
4931 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text, | |
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4932 topic, NULL); |
4359 | 4933 } |
4934 else if (type == GAIM_CONV_ACCOUNT_ONLINE || | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4935 type == GAIM_CONV_ACCOUNT_OFFLINE) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4936 { |
7929 | 4937 gray_stuff_out(gaim_conv_window_get_active_conversation(win)); |
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
4938 generate_send_as_items(win, NULL); |
6440 | 4939 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
4940 update_tab_icon(conv); | |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4941 } |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4942 else if (type == GAIM_CONV_UPDATE_AWAY) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4943 { |
6440 | 4944 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
4945 update_tab_icon(conv); | |
4359 | 4946 } |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4947 else if (type == GAIM_CONV_UPDATE_ADD || type == GAIM_CONV_UPDATE_REMOVE || |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4948 type == GAIM_CONV_UPDATE_CHATLEFT) |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4949 { |
7929 | 4950 gray_stuff_out(conv); |
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4951 } |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4952 else if (type == GAIM_CONV_UPDATE_ICON) |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4953 { |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4954 gaim_gtkconv_update_buddy_icon(conv); |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4955 } |
4359 | 4956 } |
4957 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4958 static GaimConversationUiOps conversation_ui_ops = |
4359 | 4959 { |
4960 gaim_gtkconv_destroy, /* destroy_conversation */ | |
4961 gaim_gtkconv_write_chat, /* write_chat */ | |
4962 gaim_gtkconv_write_im, /* write_im */ | |
4963 gaim_gtkconv_write_conv, /* write_conv */ | |
4964 gaim_gtkconv_chat_add_user, /* chat_add_user */ | |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4965 gaim_gtkconv_chat_add_users, /* chat_add_users */ |
4359 | 4966 gaim_gtkconv_chat_rename_user, /* chat_rename_user */ |
4967 gaim_gtkconv_chat_remove_user, /* chat_remove_user */ | |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4968 gaim_gtkconv_chat_remove_users, /* chat_remove_users */ |
4359 | 4969 NULL, /* update_progress */ |
4970 gaim_gtkconv_updated /* updated */ | |
4971 }; | |
4972 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4973 GaimConversationUiOps * |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4974 gaim_gtk_conversations_get_conv_ui_ops(void) |
4359 | 4975 { |
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4976 return &conversation_ui_ops; |
4359 | 4977 } |
4978 | |
4979 /************************************************************************** | |
4980 * Public conversation utility functions | |
4981 **************************************************************************/ | |
4982 void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4983 gaim_gtkconv_update_buddy_icon(GaimConversation *conv) |
4359 | 4984 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4985 GaimGtkConversation *gtkconv; |
7143 | 4986 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); |
4359 | 4987 |
4988 char filename[256]; | |
4989 FILE *file; | |
4990 GError *err = NULL; | |
4991 | |
6695 | 4992 GaimBuddy *buddy; |
4757 | 4993 |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4994 const void *data; |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4995 size_t len; |
4359 | 4996 |
4997 GdkPixbuf *buf; | |
4998 | |
4999 GtkWidget *event; | |
5000 GtkWidget *frame; | |
5001 GdkPixbuf *scale; | |
5002 GdkPixmap *pm; | |
5003 GdkBitmap *bm; | |
5004 int sf = 0; | |
5005 | |
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5006 g_return_if_fail(conv != NULL); |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5007 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5008 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM); |
4359 | 5009 |
5010 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
5011 | |
5012 remove_icon(gtkconv); | |
5013 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5014 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
4359 | 5015 return; |
5016 | |
5017 if (gaim_conversation_get_gc(conv) == NULL) | |
5018 return; | |
5019 | |
8189 | 5020 if (gtkconv->u.im->anim) |
4793 | 5021 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
8189 | 5022 else |
5023 gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons"); | |
4793 | 5024 |
4757 | 5025 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv), |
5026 gaim_conversation_get_name(conv))) != NULL) { | |
7125 | 5027 const char *file; |
7693 | 5028 if((file = gaim_blist_node_get_string((GaimBlistNode*)buddy, "buddy_icon"))) |
4757 | 5029 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(file, &err); |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5030 } |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5031 else |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5032 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5033 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5034 |
6877
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5035 if (icon == NULL) |
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5036 return; |
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5037 |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5038 data = gaim_buddy_icon_get_data(icon, &len); |
4757 | 5039 |
5040 /* this is such an evil hack, i don't know why i'm even considering it. | |
5041 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */ | |
5042 g_snprintf(filename, sizeof(filename), | |
5043 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d", | |
5044 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid()); | |
5045 | |
5046 if (!(file = fopen(filename, "wb"))) | |
5047 return; | |
5048 | |
5049 fwrite(data, 1, len, file); | |
5050 fclose(file); | |
5051 | |
5052 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err); | |
5053 /* make sure we remove the file as soon as possible */ | |
5054 unlink(filename); | |
5055 } | |
4359 | 5056 |
5057 if (err) { | |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5058 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv", |
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5059 "Buddy icon error: %s\n", err->message); |
4359 | 5060 g_error_free(err); |
5061 } | |
5062 | |
5063 if (!gtkconv->u.im->anim) | |
5064 return; | |
5065 | |
4793 | 5066 if(gtkconv->u.im->iter) |
5067 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
5068 | |
4359 | 5069 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) { |
5070 gtkconv->u.im->iter = NULL; | |
5071 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
5072 } else { | |
5073 gtkconv->u.im->iter = | |
5074 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); | |
5075 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
8189 | 5076 if (gtkconv->u.im->animate) |
5077 start_anim(NULL, conv); | |
4359 | 5078 } |
5079 | |
5080 sf = SCALE(gtkconv->u.im->anim); | |
5081 scale = gdk_pixbuf_scale_simple(buf, | |
5082 MAX(gdk_pixbuf_get_width(buf) * sf / | |
5083 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
5084 MAX(gdk_pixbuf_get_height(buf) * sf / | |
5085 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
5086 GDK_INTERP_NEAREST); | |
5087 | |
5088 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
4793 | 5089 g_object_unref(G_OBJECT(scale)); |
4359 | 5090 |
5091 frame = gtk_frame_new(NULL); | |
5092 gtk_frame_set_shadow_type(GTK_FRAME(frame), | |
5093 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN)); | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
5094 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 0); |
4359 | 5095 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0); |
5096 gtk_widget_show(frame); | |
5097 | |
5098 event = gtk_event_box_new(); | |
5099 gtk_container_add(GTK_CONTAINER(frame), event); | |
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5100 g_signal_connect(G_OBJECT(event), "button-press-event", |
4359 | 5101 G_CALLBACK(icon_menu), conv); |
5102 gtk_widget_show(event); | |
5103 | |
4635 | 5104 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm); |
4359 | 5105 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf); |
5106 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon); | |
5107 gtk_widget_show(gtkconv->u.im->icon); | |
5108 | |
4793 | 5109 g_object_unref(G_OBJECT(pm)); |
4359 | 5110 |
5111 if (bm) | |
4793 | 5112 g_object_unref(G_OBJECT(bm)); |
7143 | 5113 |
5114 /* The buddy icon code needs badly to be fixed. */ | |
5115 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
8068 | 5116 if(conv == gaim_conv_window_get_active_conversation(gaim_conversation_get_window(conv))) |
5117 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf); | |
4359 | 5118 } |
5119 | |
5120 void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5121 gaim_gtkconv_update_font_colors(GaimConversation *conv) |
4421 | 5122 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5123 GaimGtkConversation *gtkconv; |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5124 |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5125 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5126 return; |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5127 |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5128 gtkconv = GAIM_GTK_CONVERSATION(conv); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5129 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5130 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5131 >kconv->fg_color); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5132 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5133 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5134 >kconv->bg_color); |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5135 } |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5136 |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5137 void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5138 gaim_gtkconv_update_font_face(GaimConversation *conv) |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5139 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5140 GaimGtkConversation *gtkconv; |
6141 | 5141 |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5142 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5143 return; |
6141 | 5144 |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5145 gtkconv = GAIM_GTK_CONVERSATION(conv); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
5146 |
6141 | 5147 strncpy(gtkconv->fontface, |
5148 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"), | |
5149 sizeof(gtkconv->fontface)); | |
4421 | 5150 } |
5151 | |
5152 void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5153 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv) |
4359 | 5154 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5155 GaimConvWindow *win; |
4359 | 5156 |
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5157 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
4359 | 5158 return; |
5159 | |
7887 | 5160 win = gaim_conversation_get_window(conv); |
5161 | |
5162 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv) | |
5163 gray_stuff_out(conv); | |
4359 | 5164 } |
5165 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5166 GaimConvWindow * |
4359 | 5167 gaim_gtkwin_get_at_xy(int x, int y) |
5168 { | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5169 GaimConvWindow *win = NULL; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5170 GaimGtkWindow *gtkwin; |
4359 | 5171 GdkWindow *gdkwin; |
5172 GList *l; | |
5173 | |
5174 gdkwin = gdk_window_at_pointer(&x, &y); | |
5175 | |
5176 if (gdkwin) | |
5177 gdkwin = gdk_window_get_toplevel(gdkwin); | |
5178 | |
5179 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5180 win = (GaimConvWindow *)l->data; |
4359 | 5181 |
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5182 if (!GAIM_IS_GTK_WINDOW(win)) |
4359 | 5183 continue; |
5184 | |
5185 gtkwin = GAIM_GTK_WINDOW(win); | |
5186 | |
5187 if (gdkwin == gtkwin->window->window) | |
5188 return win; | |
5189 } | |
5190 | |
5191 return NULL; | |
5192 } | |
5193 | |
5194 int | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5195 gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y) |
4359 | 5196 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5197 GaimGtkWindow *gtkwin; |
4359 | 5198 GList *l; |
5199 gint nb_x, nb_y, x_rel, y_rel; | |
5200 GtkNotebook *notebook; | |
5201 GtkWidget *tab; | |
5202 gint i, page_num = 0; | |
5203 gboolean first_visible = TRUE; | |
5204 | |
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5205 if (!GAIM_IS_GTK_WINDOW(win)) |
4359 | 5206 return -1; |
5207 | |
5208 gtkwin = GAIM_GTK_WINDOW(win); | |
5209 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
5210 | |
5211 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
5212 x_rel = x - nb_x; | |
5213 y_rel = y - nb_y; | |
5214 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5215 for (l = gaim_conv_window_get_conversations(win), i = 0; |
4359 | 5216 l != NULL; |
5217 l = l->next, i++) { | |
5218 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5219 GaimConversation *conv = l->data; |
4359 | 5220 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
5221 | |
5222 if (!GTK_WIDGET_MAPPED(tab)) | |
5223 continue; | |
5224 | |
5225 if (first_visible) { | |
5226 first_visible = FALSE; | |
5227 | |
5228 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x; | |
5229 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y; | |
5230 } | |
5231 | |
5232 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
5233 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
5234 | |
5235 if (tab->allocation.x <= x_rel) { | |
5236 if (tab->allocation.x + tab->allocation.width <= x_rel) | |
5237 page_num = i + 1; | |
5238 else | |
5239 page_num = i; | |
5240 } | |
5241 else | |
5242 break; | |
5243 } | |
5244 else { | |
5245 if (tab->allocation.y <= y_rel) { | |
5246 if (tab->allocation.y + tab->allocation.height <= y_rel) | |
5247 page_num = i + 1; | |
5248 else | |
5249 page_num = i; | |
5250 } | |
5251 else | |
5252 break; | |
5253 } | |
5254 } | |
5255 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5256 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
4359 | 5257 return -1; |
5258 | |
5259 return page_num; | |
5260 } | |
5261 | |
5262 int | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5263 gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y) |
4359 | 5264 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5265 GaimGtkWindow *gtkwin; |
4359 | 5266 GList *l; |
5267 gint nb_x, nb_y, x_rel, y_rel; | |
5268 GtkNotebook *notebook; | |
5269 GtkWidget *tab; | |
5270 gint i, page_num = 0; | |
5271 | |
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5272 if (!GAIM_IS_GTK_WINDOW(win)) |
4359 | 5273 return -1; |
5274 | |
5275 gtkwin = GAIM_GTK_WINDOW(win); | |
5276 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
5277 | |
5278 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
5279 x_rel = x - nb_x; | |
5280 y_rel = y - nb_y; | |
5281 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5282 for (l = gaim_conv_window_get_conversations(win), i = 0; |
4359 | 5283 l != NULL; |
5284 l = l->next, i++) { | |
5285 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5286 GaimConversation *conv = l->data; |
4359 | 5287 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
5288 | |
5289 if (!GTK_WIDGET_MAPPED(tab)) | |
5290 continue; | |
5291 | |
5292 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
5293 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
5294 | |
5295 if (tab->allocation.x <= x_rel) { | |
5296 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel) | |
5297 page_num = i + 1; | |
5298 else | |
5299 page_num = i; | |
5300 } | |
5301 else | |
5302 break; | |
5303 } | |
5304 else { | |
5305 if (tab->allocation.y <= y_rel) { | |
5306 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel) | |
5307 page_num = i + 1; | |
5308 else | |
5309 page_num = i; | |
5310 } | |
5311 else | |
5312 break; | |
5313 } | |
5314 } | |
5315 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5316 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
4359 | 5317 return -1; |
5318 | |
5319 return page_num; | |
5320 } | |
4940
3708545afe42
[gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents:
4939
diff
changeset
|
5321 |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5322 static void |
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5323 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value, |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5324 gpointer data) |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5325 { |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5326 if (value) |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5327 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5328 GDK_Escape, 0, TRUE); |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5329 else |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5330 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5331 GDK_W, GDK_CONTROL_MASK, TRUE); |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5332 } |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5333 |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5334 static void |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5335 icons_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value, |
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5336 gpointer data) |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5337 { |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5338 GList *l; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5339 GaimConversation *conv; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5340 GaimGtkConversation *gtkconv; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5341 |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5342 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5343 conv = (GaimConversation *)l->data; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5344 |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5345 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5346 continue; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5347 |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5348 gtkconv = GAIM_GTK_CONVERSATION(conv); |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5349 |
6440 | 5350 if (value) { |
5351 update_tab_icon(conv); | |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5352 gtk_widget_show(gtkconv->icon); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5353 gtk_widget_show(gtkconv->menu_icon); |
6440 | 5354 } |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5355 else { |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5356 gtk_widget_hide(gtkconv->icon); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5357 gtk_widget_hide(gtkconv->menu_icon); |
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5358 } |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5359 } |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5360 } |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5361 |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5362 static void |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5363 close_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value, |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5364 gpointer data) |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5365 { |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5366 GList *l; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5367 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5368 GaimGtkConversation *gtkconv; |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5369 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5370 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5371 conv = (GaimConversation *)l->data; |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5372 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5373 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5374 continue; |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5375 |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5376 gtkconv = GAIM_GTK_CONVERSATION(conv); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5377 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5378 if (value) |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5379 gtk_widget_show(gtkconv->close); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5380 else |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5381 gtk_widget_hide(gtkconv->close); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5382 } |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5383 } |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5384 |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5385 static void |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5386 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value, |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5387 gpointer data) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5388 { |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5389 GList *l; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5390 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5391 GaimGtkConversation *gtkconv; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5392 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5393 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5394 conv = (GaimConversation *)l->data; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5395 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5396 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5397 continue; |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5398 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5399 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5400 |
7386 | 5401 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value)); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5402 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5403 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5404 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5405 static void |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5406 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value, |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5407 gpointer data) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5408 { |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5409 #ifdef USE_GTKSPELL |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5410 GList *cl; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5411 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5412 GaimGtkConversation *gtkconv; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5413 GtkSpell *spell; |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5414 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5415 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5416 |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5417 conv = (GaimConversation *)cl->data; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5418 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5419 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5420 continue; |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5421 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5422 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5423 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5424 if (value) |
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
5425 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5426 else { |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5427 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry)); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5428 gtkspell_detach(spell); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5429 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5430 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5431 #endif |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5432 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5433 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5434 static void |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5435 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value, |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5436 gpointer data) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5437 { |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5438 GList *cl; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5439 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5440 GaimGtkConversation *gtkconv; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5441 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5442 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5443 conv = (GaimConversation *)cl->data; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5444 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5445 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5446 continue; |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5447 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5448 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5449 |
7386 | 5450 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value)); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5451 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5452 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5453 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5454 static void |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5455 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value, |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5456 gpointer data) |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5457 { |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5458 GList *l; |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5459 GtkPositionType pos; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5460 GaimConvWindow *win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5461 GaimGtkWindow *gtkwin; |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5462 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5463 pos = GPOINTER_TO_INT(value); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5464 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5465 for (l = gaim_get_windows(); l != NULL; l = l->next) { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5466 win = (GaimConvWindow *)l->data; |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5467 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5468 if (!GAIM_IS_GTK_WINDOW(win)) |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5469 continue; |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5470 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5471 gtkwin = GAIM_GTK_WINDOW(win); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5472 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5473 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5474 } |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5475 } |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5476 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5477 static void |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5478 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type, |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5479 gpointer value, gpointer data) |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5480 { |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5481 GList *l; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5482 GaimConversation *conv; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5483 GaimGtkConversation *gtkconv; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5484 GaimConvWindow *win; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5485 GaimGtkWindow *gtkwin; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5486 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5487 for (l = gaim_get_conversations(); l != NULL; l = l->next) |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5488 { |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5489 conv = (GaimConversation *)l->data; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5490 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5491 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5492 continue; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5493 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5494 gtkconv = GAIM_GTK_CONVERSATION(conv); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5495 win = gaim_conversation_get_window(conv); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5496 gtkwin = GAIM_GTK_WINDOW(win); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5497 |
7386 | 5498 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5499 gtk_check_menu_item_set_active( |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5500 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5501 gtkconv->show_formatting_toolbar); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5502 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5503 if (gtkconv->show_formatting_toolbar) |
8317 | 5504 gtk_widget_show(gtkconv->toolbar); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5505 else |
8317 | 5506 gtk_widget_hide(gtkconv->toolbar); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5507 } |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5508 } |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5509 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5510 static void |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5511 im_button_type_pref_cb(const char *name, GaimPrefType type, |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5512 gpointer value, gpointer data) |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5513 { |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5514 GList *l; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5515 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5516 GaimGtkConversation *gtkconv; |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5517 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5518 for (l = gaim_get_ims(); l != NULL; l = l->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5519 conv = (GaimConversation *)l->data; |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5520 gtkconv = GAIM_GTK_CONVERSATION(conv); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5521 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5522 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5523 } |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5524 } |
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 static void |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5527 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type, |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5528 gpointer value, gpointer data) |
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 GList *l; |
8189 | 5531 GaimConversation *conv; |
5532 GaimGtkConversation *gtkconv; | |
5533 GaimConvWindow *win; | |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5534 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5535 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
|
5536 return; |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5537 |
8189 | 5538 /* Set the "animate" flag for each icon based on the new preference */ |
5539 for (l = gaim_get_ims(); l != NULL; l = l->next) { | |
5540 conv = (GaimConversation *)l->data; | |
5541 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
5542 gtkconv->u.im->animate = (gboolean)value; | |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5543 } |
8189 | 5544 |
5545 /* Now either stop or start animation for the active conversation in each window */ | |
5546 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
5547 win = (GaimConvWindow *)l->data; | |
5548 conv = gaim_conv_window_get_active_conversation(win); | |
5549 gaim_gtkconv_update_buddy_icon(conv); | |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5550 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5551 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5552 |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5553 static void |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5554 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
|
5555 gpointer data) |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5556 { |
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5557 GList *l; |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5558 |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5559 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5560 GaimConversation *conv = l->data; |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5561 |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5562 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5563 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon); |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5564 } |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5565 } |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5566 |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5680
diff
changeset
|
5567 static void |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5568 chat_button_type_pref_cb(const char *name, GaimPrefType type, |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5569 gpointer value, gpointer data) |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5570 { |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5571 GList *l; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5572 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5573 GaimGtkConversation *gtkconv; |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5574 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5575 for (l = gaim_get_chats(); l != NULL; l = l->next) { |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5576 conv = (GaimConversation *)l->data; |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5577 gtkconv = GAIM_GTK_CONVERSATION(conv); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5578 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5579 setup_chat_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5580 } |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5581 } |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5582 |
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5583 static void |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5584 conv_placement_pref_cb(const char *name, GaimPrefType type, |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5585 gpointer value, gpointer data) |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5586 { |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5587 GaimConvPlacementFunc func; |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5588 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5589 if (strcmp(name, "/gaim/gtk/conversations/placement")) |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5590 return; |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5591 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5592 func = gaim_conv_placement_get_fnc(value); |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5593 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5594 if (func == NULL) |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5595 return; |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5596 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5597 gaim_conv_placement_set_current_func(func); |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5598 } |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5599 |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5600 void |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5601 gaim_gtk_conversations_init(void) |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5602 { |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5603 /* Conversations */ |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5604 gaim_prefs_add_none("/gaim/gtk/conversations"); |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5605 gaim_prefs_add_bool("/gaim/gtk/conversations/icons_on_tabs", TRUE); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5606 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5607 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5608 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5609 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5610 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5611 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5612 gaim_prefs_add_bool("/gaim/gtk/conversations/send_strikethrough", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5613 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5614 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5615 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5616 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
|
5617 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5618 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5619 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5620 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5621 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5622 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5623 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5624 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5625 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5626 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE); |
5743
af159a5bbaa0
[gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
5627 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5628 gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE); |
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5629 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last"); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5630 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF"); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5631 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000"); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5632 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5633 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5634 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5635 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
|
5636 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5637 /* Conversations -> Chat */ |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5638 gaim_prefs_add_none("/gaim/gtk/conversations/chat"); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5639 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type", |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5640 GAIM_BUTTON_TEXT_IMAGE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5641 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5642 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
|
5643 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
|
5644 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5645 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5646 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5647 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5648 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5649 /* Conversations -> IM */ |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5650 gaim_prefs_add_none("/gaim/gtk/conversations/im"); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5651 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type", |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5652 GAIM_BUTTON_TEXT_IMAGE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5653 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
|
5654 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
|
5655 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
|
5656 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
|
5657 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5658 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5659 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5660 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5661 /* Connect callbacks. */ |
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5662 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes", |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5663 escape_closes_pref_cb, NULL); |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5664 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs", |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5665 icons_on_tabs_pref_cb, NULL); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5666 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs", |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5667 close_on_tabs_pref_cb, NULL); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5668 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5669 show_smileys_pref_cb, NULL); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5670 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5671 show_timestamps_pref_cb, NULL); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5672 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar", |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5673 show_formatting_toolbar_pref_cb, NULL); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5674 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5675 spellcheck_pref_cb, NULL); |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5676 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side", |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5677 tab_side_pref_cb, NULL); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5678 |
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5679 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement", |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5680 conv_placement_pref_cb, NULL); |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5681 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement"); |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5682 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5683 |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5684 |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5685 /* IM callbacks */ |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5686 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type", |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5687 im_button_type_pref_cb, NULL); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5688 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5689 animate_buddy_icons_pref_cb, NULL); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5690 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5691 show_buddy_icons_pref_cb, NULL); |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5692 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5693 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5694 /* Chat callbacks */ |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5695 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type", |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5696 chat_button_type_pref_cb, NULL); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5697 } |