Mercurial > pidgin.yaz
annotate src/gtkconv.c @ 8380:4a5b36510665
[gaim-migrate @ 9108]
Just a minor WYSIWYG fix; now the grow and shrink buttons work properly.
Also, the CSS standard says that each font size should be 1.2 times the size
of the next smallest, and W3C tends to be smart about these things, so I did
that. Also, timestamps are once again size=2, which I think looks better.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Mon, 01 Mar 2004 20:52:57 +0000 |
parents | e7463be62fb1 |
children | 15614a7cdc13 |
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); | |
8329
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
275 |
8061 | 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 menu items */ | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2194 gtk_widget_show(gtkwin->menu.view_log); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2195 gtk_widget_show(gtkwin->menu.add_pounce); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2196 gtk_widget_show(gtkwin->menu.get_info); |
7887 | 2197 gtk_widget_show(gtkwin->menu.warn); |
7859 | 2198 gtk_widget_hide(gtkwin->menu.invite); |
7887 | 2199 gtk_widget_show(gtkwin->menu.alias); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2200 gtk_widget_show(gtkwin->menu.block); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2201 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2202 if (gaim_find_buddy(gaim_conversation_get_account(conv), |
7143 | 2203 gaim_conversation_get_name(conv)) == NULL) { |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2204 gtk_widget_show(gtkwin->menu.add); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2205 gtk_widget_hide(gtkwin->menu.remove); |
7929 | 2206 gtk_widget_show(gtkconv->add); |
2207 gtk_widget_hide(gtkconv->remove); | |
7859 | 2208 } else { |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2209 gtk_widget_show(gtkwin->menu.remove); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2210 gtk_widget_hide(gtkwin->menu.add); |
7929 | 2211 gtk_widget_hide(gtkconv->add); |
2212 gtk_widget_show(gtkconv->remove); | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2213 } |
7887 | 2214 |
2215 gtk_widget_show(gtkwin->menu.insert_link); | |
2216 gtk_widget_show(gtkwin->menu.insert_image); | |
2217 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
2218 /* Show stuff that applies to IMs, hide stuff that applies to chats */ | |
2219 | |
2220 /* Deal with buttons */ | |
7952 | 2221 gtk_widget_show(gtkconv->info); |
7887 | 2222 gtk_widget_show(gtkconv->send); |
2223 gtk_widget_show(gtkconv->u.chat->invite); | |
2224 | |
2225 /* Deal with menu items */ | |
7859 | 2226 gtk_widget_hide(gtkwin->menu.view_log); |
2227 gtk_widget_hide(gtkwin->menu.add_pounce); | |
2228 gtk_widget_hide(gtkwin->menu.get_info); | |
7887 | 2229 gtk_widget_hide(gtkwin->menu.warn); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2230 gtk_widget_show(gtkwin->menu.invite); |
7887 | 2231 gtk_widget_show(gtkwin->menu.alias); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2232 gtk_widget_hide(gtkwin->menu.block); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2233 |
7879 | 2234 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), |
2235 gaim_conversation_get_name(conv)) == NULL) { | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2236 gtk_widget_show(gtkwin->menu.add); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2237 gtk_widget_hide(gtkwin->menu.remove); |
7929 | 2238 gtk_widget_show(gtkconv->add); |
2239 gtk_widget_hide(gtkconv->remove); | |
7859 | 2240 } else { |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2241 gtk_widget_show(gtkwin->menu.remove); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2242 gtk_widget_hide(gtkwin->menu.add); |
7929 | 2243 gtk_widget_hide(gtkconv->add); |
2244 gtk_widget_show(gtkconv->remove); | |
7887 | 2245 } |
2246 | |
2247 gtk_widget_show(gtkwin->menu.insert_link); | |
2248 gtk_widget_hide(gtkwin->menu.insert_image); | |
2249 } | |
2250 | |
2251 /* | |
2252 * Handle graying stuff out based on whether an account is connected | |
2253 * and what features that account supports. | |
2254 */ | |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2255 if ((gc != NULL) && |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2256 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) || |
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2257 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) { |
7887 | 2258 /* Account is online */ |
2259 | |
2260 /* Deal with buttons */ | |
7929 | 2261 gtk_widget_set_sensitive(gtkconv->add, TRUE); |
2262 gtk_widget_set_sensitive(gtkconv->remove, TRUE); | |
7887 | 2263 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL)); |
7929 | 2264 |
7887 | 2265 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
7929 | 2266 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->send_im != NULL)); |
7887 | 2267 gtk_widget_set_sensitive(gtkconv->u.im->warn, |
2268 (prpl_info->warn != NULL)); | |
2269 gtk_widget_set_sensitive(gtkconv->u.im->block, | |
2270 (prpl_info->add_deny != NULL)); | |
2271 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
2272 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->chat_send != NULL)); | |
2273 gtk_widget_set_sensitive(gtkconv->u.chat->invite, | |
2274 (prpl_info->chat_invite != NULL)); | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2275 } |
7887 | 2276 |
2277 /* Deal with the toolbar */ | |
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2278 #if 0 |
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2279 gtk_widget_set_sensitive(gtkconv->toolbar.link, TRUE); |
7887 | 2280 gtk_widget_set_sensitive(gtkconv->toolbar.image, |
2281 (prpl_info->options & OPT_PROTO_IM_IMAGE)); | |
7888 | 2282 gtk_widget_set_sensitive(gtkconv->toolbar.bgcolor, |
2283 !(gc->flags & GAIM_CONNECTION_NO_BGCOLOR)); | |
7887 | 2284 |
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2285 /* Deal with menu items */ |
7887 | 2286 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); |
2287 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | |
2288 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL)); | |
2289 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL)); | |
2290 gtk_widget_set_sensitive(gtkwin->menu.invite, | |
2291 (prpl_info->chat_invite != NULL)); | |
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2292 #endif |
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2293 |
7887 | 2294 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
2295 if (gaim_find_buddy(gaim_conversation_get_account(conv), | |
2296 gaim_conversation_get_name(conv)) == NULL) | |
2297 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
2298 else | |
2299 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | |
2300 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
2301 if (gaim_blist_find_chat(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 } | |
2307 | |
7931 | 2308 gtk_widget_set_sensitive(gtkwin->menu.block, (prpl_info->add_deny != NULL)); |
7887 | 2309 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); |
7859 | 2310 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); |
7887 | 2311 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
2312 gtk_widget_set_sensitive(gtkwin->menu.insert_image, | |
2313 (prpl_info->options & OPT_PROTO_IM_IMAGE)); | |
2314 } else { | |
2315 /* Account is offline */ | |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2316 /* Or it's a chat where we left. */ |
7887 | 2317 |
2318 /* Deal with buttons */ | |
7929 | 2319 gtk_widget_set_sensitive(gtkconv->add, FALSE); |
2320 gtk_widget_set_sensitive(gtkconv->remove, FALSE); | |
7887 | 2321 gtk_widget_set_sensitive(gtkconv->info, FALSE); |
2322 gtk_widget_set_sensitive(gtkconv->send, FALSE); | |
2323 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
2324 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE); | |
2325 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE); | |
2326 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
2327 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE); | |
2328 } | |
2329 | |
2330 /* Then deal with menu items */ | |
2331 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); | |
2332 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | |
2333 gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE); | |
2334 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE); | |
2335 gtk_widget_set_sensitive(gtkwin->menu.invite, FALSE); | |
2336 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
2337 gtk_widget_set_sensitive(gtkwin->menu.block, FALSE); | |
2338 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); | |
2339 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); | |
7929 | 2340 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
7887 | 2341 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); |
2342 } | |
2343 | |
2344 /* | |
2345 * Update the window's icon | |
2346 */ | |
2347 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && (gtkconv->u.im->anim)) { | |
2348 window_icon = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
2349 g_object_ref(window_icon); | |
2350 } else { | |
7219 | 2351 window_icon = get_tab_icon(conv); |
4359 | 2352 } |
7887 | 2353 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); |
2354 g_object_unref(G_OBJECT(window_icon)); | |
2355 } | |
2356 | |
2357 static void | |
8189 | 2358 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
2359 gpointer user_data) | |
2360 { | |
2361 GaimConvWindow *win; | |
2362 GaimConversation *conv; | |
2363 GaimGtkConversation *gtkconv; | |
2364 | |
2365 win = (GaimConvWindow *)user_data; | |
2366 conv = gaim_conv_window_get_active_conversation(win); | |
2367 | |
2368 g_return_if_fail(conv != NULL); | |
2369 | |
8192 | 2370 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM) |
2371 return; | |
2372 | |
8189 | 2373 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2374 | |
2375 stop_anim(NULL, conv); | |
2376 } | |
2377 | |
2378 static void | |
7887 | 2379 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
2380 gpointer user_data) | |
2381 { | |
2382 GaimConvWindow *win; | |
2383 GaimConversation *conv; | |
2384 GaimGtkConversation *gtkconv; | |
2385 GaimGtkWindow *gtkwin; | |
2386 | |
2387 win = (GaimConvWindow *)user_data; | |
2388 conv = gaim_conv_window_get_conversation_at(win, page_num); | |
2389 | |
2390 g_return_if_fail(conv != NULL); | |
2391 | |
2392 gtkwin = GAIM_GTK_WINDOW(win); | |
2393 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
2394 | |
2395 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE); | |
2396 | |
2397 /* Update the menubar */ | |
2398 gray_stuff_out(conv); | |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2399 |
4736 | 2400 update_typing_icon(conv); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2401 |
4359 | 2402 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging), |
7143 | 2403 gaim_conversation_is_logging(conv)); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2404 |
4359 | 2405 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds), |
7143 | 2406 gtkconv->make_sound); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2407 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2408 gtk_check_menu_item_set_active( |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2409 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2410 gtkconv->show_formatting_toolbar); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2411 |
8189 | 2412 /* |
2413 * We pause icons when they are not visible. If this icon should | |
2414 * be animated then start it back up again.lll | |
2415 */ | |
8192 | 2416 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && |
2417 (gtkconv->u.im->animate)) | |
8189 | 2418 start_anim(NULL, conv); |
2419 | |
4359 | 2420 gtk_widget_grab_focus(gtkconv->entry); |
4681 | 2421 |
4965 | 2422 gtk_window_set_title(GTK_WINDOW(gtkwin->window), |
7143 | 2423 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
4359 | 2424 } |
2425 | |
2426 /************************************************************************** | |
2427 * Utility functions | |
2428 **************************************************************************/ | |
2429 | |
2430 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2431 got_typing_keypress(GaimConversation *conv, gboolean first) |
4359 | 2432 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2433 GaimConvIm *im; |
4685 | 2434 |
4359 | 2435 /* |
2436 * 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
|
2437 * send GAIM_TYPED any time soon. |
4359 | 2438 */ |
2439 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2440 im = GAIM_CONV_IM(conv); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2441 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2442 if (gaim_conv_im_get_type_again_timeout(im)) |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2443 gaim_conv_im_stop_type_again_timeout(im); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2444 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2445 gaim_conv_im_start_type_again_timeout(im); |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2446 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2447 if (first || (gaim_conv_im_get_type_again(im) != 0 && |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2448 time(NULL) > gaim_conv_im_get_type_again(im))) { |
4359 | 2449 |
2450 int timeout = serv_send_typing(gaim_conversation_get_gc(conv), | |
2451 (char *)gaim_conversation_get_name(conv), | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2452 GAIM_TYPING); |
4359 | 2453 |
2454 if (timeout) | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2455 gaim_conv_im_set_type_again(im, time(NULL) + timeout); |
4359 | 2456 else |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2457 gaim_conv_im_set_type_again(im, 0); |
4359 | 2458 } |
2459 } | |
2460 | |
4736 | 2461 static void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2462 update_typing_icon(GaimConversation *conv) |
4736 | 2463 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2464 GaimGtkWindow *gtkwin; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2465 GaimConvIm *im = NULL; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2466 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
4736 | 2467 |
2468 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); | |
2469 | |
2470 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2471 im = GAIM_CONV_IM(conv); |
4736 | 2472 |
2473 if(gtkwin->menu.typing_icon) { | |
2474 gtk_widget_destroy(gtkwin->menu.typing_icon); | |
2475 gtkwin->menu.typing_icon = NULL; | |
2476 } | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2477 if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) { |
4736 | 2478 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
2479 gtk_image_menu_item_set_image( | |
2480 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
2481 gtk_image_new_from_stock(GAIM_STOCK_TYPING, | |
2482 GTK_ICON_SIZE_MENU)); | |
4757 | 2483 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
4736 | 2484 _("User is typing..."), NULL); |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2485 } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) { |
4736 | 2486 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
2487 gtk_image_menu_item_set_image( | |
2488 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
2489 gtk_image_new_from_stock(GAIM_STOCK_TYPED, | |
2490 GTK_ICON_SIZE_MENU)); | |
4757 | 2491 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
4736 | 2492 _("User has typed something and paused"), NULL); |
2493 } | |
2494 | |
2495 if(gtkwin->menu.typing_icon) { | |
2496 gtk_menu_item_set_right_justified( | |
2497 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE); | |
2498 gtk_widget_show_all(gtkwin->menu.typing_icon); | |
2499 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar), | |
2500 gtkwin->menu.typing_icon); | |
2501 } | |
2502 } | |
2503 | |
4685 | 2504 static gboolean |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2505 update_send_as_selection(GaimConvWindow *win) |
4359 | 2506 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2507 GaimAccount *account; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2508 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2509 GaimGtkWindow *gtkwin; |
4359 | 2510 GtkWidget *menu; |
2511 GList *child; | |
2512 | |
7090
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2513 if (g_list_find(gaim_get_windows(), win) == NULL) |
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2514 return FALSE; |
4849 | 2515 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2516 conv = gaim_conv_window_get_active_conversation(win); |
4359 | 2517 |
5860
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2518 if (conv == NULL) |
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2519 return FALSE; |
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2520 |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2521 account = gaim_conversation_get_account(conv); |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2522 gtkwin = GAIM_GTK_WINDOW(win); |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2523 |
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2524 if (gtkwin->menu.send_as == NULL) |
4685 | 2525 return FALSE; |
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2526 |
4359 | 2527 gtk_widget_show(gtkwin->menu.send_as); |
2528 | |
2529 menu = gtk_menu_item_get_submenu( | |
2530 GTK_MENU_ITEM(gtkwin->menu.send_as)); | |
2531 | |
2532 for (child = gtk_container_get_children(GTK_CONTAINER(menu)); | |
2533 child != NULL; | |
2534 child = child->next) { | |
2535 | |
2536 GtkWidget *item = child->data; | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2537 GaimAccount *item_account = g_object_get_data(G_OBJECT(item), |
4673 | 2538 "gaim_account"); |
2539 | |
2540 if (account == item_account) { | |
4359 | 2541 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); |
2542 break; | |
2543 } | |
2544 } | |
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2545 |
4685 | 2546 return FALSE; |
4359 | 2547 } |
2548 | |
2549 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2550 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv) |
4359 | 2551 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2552 GaimGtkWindow *gtkwin; |
4359 | 2553 GtkWidget *menu; |
2554 GtkWidget *menuitem; | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2555 GList *gcs; |
4359 | 2556 GList *convs; |
2557 GSList *group = NULL; | |
2558 gboolean first_offline = TRUE; | |
2559 gboolean found_online = FALSE; | |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2560 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
4359 | 2561 |
2562 gtkwin = GAIM_GTK_WINDOW(win); | |
2563 | |
2564 if (gtkwin->menu.send_as != NULL) | |
2565 gtk_widget_destroy(gtkwin->menu.send_as); | |
2566 | |
2567 /* See if we have > 1 connection active. */ | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2568 if (g_list_length(gaim_connections_get_all()) < 2) { |
4359 | 2569 /* Now make sure we don't have any Offline entries. */ |
2570 gboolean found_offline = FALSE; | |
2571 | |
2572 for (convs = gaim_get_conversations(); | |
2573 convs != NULL; | |
2574 convs = convs->next) { | |
2575 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2576 GaimConversation *conv; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2577 GaimAccount *account; |
4491 | 2578 |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2579 conv = (GaimConversation *)convs->data; |
4491 | 2580 account = gaim_conversation_get_account(conv); |
2581 | |
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2582 if (account != NULL && account->gc == NULL) { |
4359 | 2583 found_offline = TRUE; |
2584 break; | |
2585 } | |
2586 } | |
2587 | |
2588 if (!found_offline) { | |
2589 gtkwin->menu.send_as = NULL; | |
2590 return; | |
2591 } | |
2592 } | |
2593 | |
2594 /* Build the Send As menu */ | |
2595 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As")); | |
2596 gtk_widget_show(gtkwin->menu.send_as); | |
2597 | |
2598 menu = gtk_menu_new(); | |
7857
43f63ff8a6d8
[gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents:
7855
diff
changeset
|
2599 gtk_menu_shell_insert(GTK_MENU_SHELL(gtkwin->menu.menubar), |
43f63ff8a6d8
[gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents:
7855
diff
changeset
|
2600 gtkwin->menu.send_as, 2); |
4359 | 2601 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu); |
2602 | |
2603 gtk_widget_show(menu); | |
2604 | |
2605 /* Fill it with entries. */ | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2606 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) { |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2607 |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2608 GaimConnection *gc; |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2609 GaimAccount *account; |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2610 GtkWidget *box; |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2611 GtkWidget *label; |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2612 GtkWidget *image; |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2613 GdkPixbuf *pixbuf, *scale; |
4359 | 2614 |
2615 found_online = TRUE; | |
2616 | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2617 gc = (GaimConnection *)gcs->data; |
4359 | 2618 |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2619 /* Create a pixmap for the protocol icon. */ |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2620 pixbuf = create_prpl_icon(gc->account); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2621 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
|
2622 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2623 /* Now convert it to GtkImage */ |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2624 if (pixbuf == NULL) |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2625 image = gtk_image_new(); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2626 else |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2627 image = gtk_image_new_from_pixbuf(scale); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2628 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2629 gtk_size_group_add_widget(sg, image); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2630 |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2631 g_object_unref(G_OBJECT(scale)); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2632 g_object_unref(G_OBJECT(pixbuf)); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2633 |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2634 account = gaim_connection_get_account(gc); |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2635 |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2636 /* Make our menu item */ |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2637 menuitem = gtk_radio_menu_item_new_with_label(group, |
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2638 gaim_account_get_username(account)); |
4793 | 2639 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
4359 | 2640 |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2641 /* Do some evil, see some evil, speak some evil. */ |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2642 box = gtk_hbox_new(FALSE, 0); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2643 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2644 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2645 g_object_ref(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2646 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2647 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2648 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2649 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2650 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2651 g_object_unref(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2652 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2653 gtk_container_add(GTK_CONTAINER(menuitem), box); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2654 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2655 gtk_widget_show(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2656 gtk_widget_show(image); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2657 gtk_widget_show(box); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2658 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2659 /* Set our data and callbacks. */ |
4359 | 2660 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
4673 | 2661 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account); |
4359 | 2662 |
4786 | 2663 g_signal_connect(G_OBJECT(menuitem), "activate", |
4673 | 2664 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
4359 | 2665 |
2666 gtk_widget_show(menuitem); | |
2667 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
2668 } | |
2669 | |
2670 /* | |
2671 * Fill it with any accounts that still has an open (yet disabled) window | |
2672 * (signed off accounts with a window open). | |
2673 */ | |
2674 for (convs = gaim_get_conversations(); | |
2675 convs != NULL; | |
2676 convs = convs->next) { | |
2677 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2678 GaimConversation *conv; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2679 GaimAccount *account; |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2680 GtkWidget *box; |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2681 GtkWidget *label; |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2682 GtkWidget *image; |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2683 GdkPixbuf *pixbuf, *scale; |
4359 | 2684 |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2685 conv = (GaimConversation *)convs->data; |
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2686 |
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2687 if (conv == deleted_conv) |
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2688 continue; |
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2689 |
4491 | 2690 account = gaim_conversation_get_account(conv); |
2691 | |
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2692 if (account != NULL && account->gc == NULL) { |
4359 | 2693 if (first_offline && found_online) { |
2694 menuitem = gtk_separator_menu_item_new(); | |
2695 gtk_widget_show(menuitem); | |
2696 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
2697 | |
2698 first_offline = FALSE; | |
2699 } | |
2700 | |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2701 /* Create a pixmap for the protocol icon. */ |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2702 pixbuf = create_prpl_icon(account); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2703 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2704 GDK_INTERP_BILINEAR); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2705 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2706 /* Now convert it to GtkImage */ |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2707 if (pixbuf == NULL) |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2708 image = gtk_image_new(); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2709 else |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2710 image = gtk_image_new_from_pixbuf(scale); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2711 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2712 gtk_size_group_add_widget(sg, image); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2713 |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2714 if (scale != NULL) g_object_unref(scale); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2715 if (pixbuf != NULL) g_object_unref(pixbuf); |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2716 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2717 /* Make our menu item */ |
4359 | 2718 menuitem = gtk_radio_menu_item_new_with_label(group, |
4491 | 2719 account->username); |
4793 | 2720 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
4359 | 2721 |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2722 /* Do some evil, see some evil, speak some evil. */ |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2723 box = gtk_hbox_new(FALSE, 0); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2724 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2725 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2726 g_object_ref(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2727 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2728 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2729 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2730 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2731 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2732 g_object_unref(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2733 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2734 gtk_container_add(GTK_CONTAINER(menuitem), box); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2735 |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2736 gtk_widget_show(label); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2737 gtk_widget_show(image); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2738 gtk_widget_show(box); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2739 |
4359 | 2740 gtk_widget_set_sensitive(menuitem, FALSE); |
4786 | 2741 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
4674 | 2742 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account); |
4359 | 2743 |
4786 | 2744 g_signal_connect(G_OBJECT(menuitem), "activate", |
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
2745 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
4786 | 2746 |
4359 | 2747 gtk_widget_show(menuitem); |
2748 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
2749 } | |
2750 } | |
2751 | |
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2752 g_object_unref(sg); |
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2753 |
4359 | 2754 gtk_widget_show(gtkwin->menu.send_as); |
2755 update_send_as_selection(win); | |
2756 } | |
2757 | |
2758 static GList * | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2759 generate_invite_user_names(GaimConnection *gc) |
4359 | 2760 { |
6695 | 2761 GaimBlistNode *gnode,*cnode,*bnode; |
4359 | 2762 static GList *tmp = NULL; |
2763 | |
2764 if (tmp) | |
2765 g_list_free(tmp); | |
2766 | |
2767 tmp = g_list_append(NULL, ""); | |
2768 | |
2769 if (gc != NULL) { | |
4785 | 2770 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
2771 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
2772 continue; | |
6695 | 2773 for(cnode = gnode->child; cnode; cnode = cnode->next) { |
2774 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
4785 | 2775 continue; |
6695 | 2776 for(bnode = cnode->child; bnode; bnode = bnode->next) { |
2777 GaimBuddy *buddy; | |
2778 | |
2779 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
2780 continue; | |
2781 | |
2782 buddy = (GaimBuddy *)bnode; | |
2783 | |
2784 if (buddy->account == gc->account && | |
2785 GAIM_BUDDY_IS_ONLINE(buddy)) | |
2786 tmp = g_list_append(tmp, buddy->name); | |
2787 } | |
4359 | 2788 } |
2789 } | |
2790 } | |
2791 | |
2792 return tmp; | |
2793 } | |
2794 | |
2795 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2796 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos) |
4359 | 2797 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2798 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2799 GaimGtkChatPane *gtkchat; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2800 GaimConvChat *chat; |
4359 | 2801 GtkTreeIter iter; |
2802 GtkListStore *ls; | |
2803 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2804 chat = GAIM_CONV_CHAT(conv); |
4359 | 2805 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2806 gtkchat = gtkconv->u.chat; | |
2807 | |
2808 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list))); | |
2809 | |
2810 gtk_list_store_append(ls, &iter); | |
2811 gtk_list_store_set(ls, &iter, 0, | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2812 (gaim_conv_chat_is_user_ignored(chat, name) ? "X" : " "), |
4359 | 2813 1, name, -1); |
2814 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
2815 GTK_SORT_ASCENDING); | |
2816 } | |
2817 | |
2818 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2819 tab_complete(GaimConversation *conv) |
4359 | 2820 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2821 GaimGtkConversation *gtkconv; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2822 GaimConvChat *chat; |
4359 | 2823 GtkTextIter cursor, word_start, start_buffer; |
2824 int start; | |
2825 int most_matched = -1; | |
2826 char *entered, *partial = NULL; | |
2827 char *text; | |
8021 | 2828 char *nick_partial; |
4359 | 2829 GList *matches = NULL; |
2830 GList *nicks = NULL; | |
2831 | |
2832 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2833 chat = GAIM_CONV_CHAT(conv); |
4359 | 2834 |
2835 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
2836 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
2837 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
2838 | |
2839 word_start = cursor; | |
2840 | |
2841 /* if there's nothing there just return */ | |
2842 if (!gtk_text_iter_compare(&cursor, &start_buffer)) | |
2843 return; | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
2844 |
4359 | 2845 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer, |
2846 &cursor, FALSE); | |
2847 | |
2848 /* if we're at the end of ": " we need to move back 2 spaces */ | |
2849 start = strlen(text) - 1; | |
2850 | |
8021 | 2851 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) { |
4359 | 2852 gtk_text_iter_backward_chars(&word_start, 2); |
8021 | 2853 start-=2; |
2854 } | |
4359 | 2855 |
2856 /* find the start of the word that we're tabbing */ | |
2857 while (start >= 0 && text[start] != ' ') { | |
2858 gtk_text_iter_backward_char(&word_start); | |
2859 start--; | |
2860 } | |
2861 | |
2862 g_free(text); | |
2863 | |
2864 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start, | |
2865 &cursor, FALSE); | |
2866 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
2867 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
4359 | 2868 if (strlen(entered) >= 2 && |
2869 !strncmp(": ", entered + strlen(entered) - 2, 2)) { | |
2870 | |
2871 entered[strlen(entered) - 2] = 0; | |
2872 } | |
2873 } | |
2874 | |
8021 | 2875 if (!g_utf8_strlen(entered, -1)) { |
4359 | 2876 g_free(entered); |
2877 return; | |
2878 } | |
2879 | |
8021 | 2880 nick_partial = g_malloc(strlen(entered)+1); |
2881 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2882 for (nicks = gaim_conv_chat_get_users(chat); |
4359 | 2883 nicks != NULL; |
2884 nicks = nicks->next) { | |
2885 | |
2886 char *nick = nicks->data; | |
8021 | 2887 |
8159 | 2888 strncpy(nick_partial, nick, strlen(entered)); |
8172 | 2889 nick_partial[strlen(entered)] = '\0'; |
8021 | 2890 if(gaim_utf8_strcasecmp(nick_partial, entered)) |
2891 continue; | |
4359 | 2892 |
2893 /* if we're here, it's a possible completion */ | |
2894 | |
2895 /* 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
|
2896 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
4359 | 2897 gtk_text_buffer_delete(gtkconv->entry_buffer, |
2898 &word_start, &cursor); | |
2899 | |
2900 if (strlen(nick) == strlen(entered)) { | |
2901 nicks = (nicks->next | |
2902 ? nicks->next | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2903 : gaim_conv_chat_get_users(chat)); |
4359 | 2904 |
2905 nick = nicks->data; | |
2906 } | |
2907 | |
2908 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
2909 &start_buffer); | |
2910 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
2911 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
2912 | |
2913 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
2914 char *tmp = g_strdup_printf("%s: ", nick); | |
2915 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
2916 tmp, -1); | |
2917 g_free(tmp); | |
2918 } | |
2919 else | |
2920 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
2921 nick, -1); | |
2922 | |
8021 | 2923 g_free(nick_partial); |
4359 | 2924 g_free(entered); |
2925 | |
2926 return; | |
2927 } | |
2928 | |
2929 /* we're only here if we're doing new style */ | |
2930 if (most_matched == -1) { | |
2931 /* | |
2932 * this will only get called once, since from now | |
2933 * on most_matched is >= 0 | |
2934 */ | |
2935 most_matched = strlen(nick); | |
2936 partial = g_strdup(nick); | |
2937 } | |
2938 else if (most_matched) { | |
8021 | 2939 char *tmp = g_strdup(nick); |
2940 | |
2941 while (gaim_utf8_strcasecmp(tmp, partial)) { | |
2942 partial[most_matched] = '\0'; | |
2943 if(most_matched < strlen(tmp)) | |
2944 tmp[most_matched] = '\0'; | |
4359 | 2945 most_matched--; |
8021 | 2946 } |
8079 | 2947 most_matched++; |
8021 | 2948 |
2949 g_free(tmp); | |
4359 | 2950 } |
2951 | |
2952 matches = g_list_append(matches, nick); | |
2953 } | |
2954 | |
8021 | 2955 g_free(nick_partial); |
2956 | |
4359 | 2957 /* we're only here if we're doing new style */ |
2958 | |
2959 /* if there weren't any matches, return */ | |
2960 if (!matches) { | |
2961 /* if matches isn't set partials won't be either */ | |
2962 g_free(entered); | |
2963 return; | |
2964 } | |
2965 | |
2966 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor); | |
2967 | |
2968 if (!matches->next) { | |
2969 /* there was only one match. fill it in. */ | |
2970 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
2971 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
2972 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
2973 | |
2974 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
2975 char *tmp = g_strdup_printf("%s: ", (char *)matches->data); | |
2976 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1); | |
2977 g_free(tmp); | |
2978 } | |
2979 else | |
2980 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
2981 matches->data, -1); | |
2982 | |
2983 matches = g_list_remove(matches, matches->data); | |
2984 } | |
2985 else { | |
2986 /* | |
2987 * there were lots of matches, fill in as much as possible | |
2988 * and display all of them | |
2989 */ | |
2990 char *addthis = g_malloc0(1); | |
2991 | |
2992 while (matches) { | |
2993 char *tmp = addthis; | |
2994 addthis = g_strconcat(tmp, matches->data, " ", NULL); | |
2995 g_free(tmp); | |
2996 matches = g_list_remove(matches, matches->data); | |
2997 } | |
2998 | |
6982 | 2999 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG, |
4359 | 3000 time(NULL)); |
3001 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1); | |
3002 g_free(addthis); | |
3003 } | |
3004 | |
3005 g_free(entered); | |
3006 g_free(partial); | |
3007 } | |
3008 | |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3009 static void |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3010 save_convo(GtkWidget *save, GaimConversation *c) |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3011 { |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3012 char buf[BUF_LONG]; |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3013 GtkWidget *window; |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3014 |
7859 | 3015 window = gtk_file_selection_new(_("Save Conversation")); |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3016 |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3017 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log", |
7261 | 3018 gaim_home_dir(), gaim_normalize(c->account, c->name)); |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3019 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3020 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
|
3021 "gaim_conversation", c); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3022 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
6038 | 3023 "clicked", G_CALLBACK(do_check_save_convo), window); |
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3024 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
|
3025 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3026 gtk_widget_show(window); |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3027 } |
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3028 |
4359 | 3029 static GtkItemFactoryEntry menu_items[] = |
3030 { | |
3031 /* Conversation menu */ | |
4596 | 3032 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" }, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3033 |
7887 | 3034 { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb, |
7859 | 3035 0, "<StockItem>", GAIM_STOCK_IM }, |
3036 | |
3037 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" }, | |
3038 | |
7880 | 3039 { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0, "<StockItem>", GTK_STOCK_FIND }, |
7859 | 3040 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL }, |
4596 | 3041 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, |
4359 | 3042 "<StockItem>", GTK_STOCK_SAVE_AS }, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3043 |
4359 | 3044 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" }, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3045 |
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3046 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3047 0, NULL }, |
7859 | 3048 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3049 "<StockItem>", GAIM_STOCK_INFO }, |
7859 | 3050 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0, |
3051 "<StockItem>", GAIM_STOCK_WARN }, | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3052 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3053 "<StockItem>", GAIM_STOCK_INVITE }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3054 |
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3055 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" }, |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3056 |
7859 | 3057 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0, |
3058 "<StockItem>", GAIM_STOCK_EDIT }, | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3059 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3060 "<StockItem>", GAIM_STOCK_BLOCK }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3061 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3062 "<StockItem>", GTK_STOCK_ADD }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3063 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3064 "<StockItem>", GTK_STOCK_REMOVE }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3065 |
7859 | 3066 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" }, |
3067 | |
8330
80915fd16349
[gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents:
8329
diff
changeset
|
3068 { N_("/Conversation/Insert Lin_k..."), NULL, NULL, 0, /* menu_insert_link_cb, 0, */ |
7859 | 3069 "<StockItem>", GAIM_STOCK_LINK }, |
8330
80915fd16349
[gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents:
8329
diff
changeset
|
3070 { N_("/Conversation/Insert Imag_e..."), NULL, NULL, 0, /* menu_insert_image_cb, 0, */ |
7859 | 3071 "<StockItem>", GAIM_STOCK_IMAGE }, |
3072 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3073 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" }, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3074 |
4596 | 3075 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, |
4359 | 3076 "<StockItem>", GTK_STOCK_CLOSE }, |
3077 | |
3078 /* Options */ | |
4596 | 3079 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, |
3080 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, | |
3081 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, | |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3082 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" }, |
4359 | 3083 }; |
3084 | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
3085 static const int menu_item_count = |
4359 | 3086 sizeof(menu_items) / sizeof(*menu_items); |
3087 | |
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3088 static char * |
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3089 item_factory_translate_func (const char *path, gpointer func_data) |
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3090 { |
7386 | 3091 return _((char *)path); |
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3092 } |
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3093 |
4359 | 3094 static GtkWidget * |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3095 setup_menubar(GaimConvWindow *win) |
4359 | 3096 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3097 GaimGtkWindow *gtkwin; |
5116 | 3098 GtkAccelGroup *accel_group; |
4359 | 3099 gtkwin = GAIM_GTK_WINDOW(win); |
3100 | |
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3101 accel_group = gtk_accel_group_new (); |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3102 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group); |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3103 g_object_unref (accel_group); |
5116 | 3104 |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3105 gtkwin->menu.item_factory = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3106 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3107 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3108 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3109 item_factory_translate_func, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3110 NULL, NULL); |
4630 | 3111 |
3112 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count, | |
4359 | 3113 menu_items, win); |
7420 | 3114 g_signal_connect(G_OBJECT(accel_group), "accel-changed", |
3115 G_CALLBACK(gaim_gtk_save_accels_cb), NULL); | |
4359 | 3116 |
5908
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 gtkwin->menu.menubar = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3119 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>"); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3120 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3121 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3122 gtkwin->menu.view_log = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3123 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
7295 | 3124 N_("/Conversation/View Log")); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3125 /* --- */ |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3126 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3127 gtkwin->menu.add_pounce = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3128 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3129 N_("/Conversation/Add Buddy Pounce...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3130 |
7879 | 3131 /* --- */ |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3132 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3133 gtkwin->menu.get_info = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3134 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
7859 | 3135 N_("/Conversation/Get Info")); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3136 |
7879 | 3137 gtkwin->menu.warn = |
3138 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
3139 N_("/Conversation/Warn...")); | |
3140 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3141 gtkwin->menu.invite = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3142 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3143 N_("/Conversation/Invite...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3144 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3145 /* --- */ |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3146 |
7879 | 3147 gtkwin->menu.alias = |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3148 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
7879 | 3149 N_("/Conversation/Alias...")); |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3150 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3151 gtkwin->menu.block = |
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/Block...")); |
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 gtkwin->menu.add = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3156 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3157 N_("/Conversation/Add...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3158 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3159 gtkwin->menu.remove = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3160 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3161 N_("/Conversation/Remove...")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3162 |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3163 /* --- */ |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3164 |
7879 | 3165 gtkwin->menu.insert_link = |
3166 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
3167 N_("/Conversation/Insert Link...")); | |
3168 | |
3169 gtkwin->menu.insert_image = | |
3170 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
3171 N_("/Conversation/Insert Image...")); | |
3172 | |
3173 /* --- */ | |
3174 | |
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3175 gtkwin->menu.logging = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3176 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3177 N_("/Options/Enable Logging")); |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3178 gtkwin->menu.sounds = |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3179 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3180 N_("/Options/Enable Sounds")); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3181 gtkwin->menu.show_formatting_toolbar = |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3182 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3183 N_("/Options/Show Formatting Toolbar")); |
4359 | 3184 |
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
3185 generate_send_as_items(win, NULL); |
4359 | 3186 |
3187 gtk_widget_show(gtkwin->menu.menubar); | |
4931 | 3188 |
3189 return gtkwin->menu.menubar; | |
4359 | 3190 } |
3191 | |
3192 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3193 setup_im_buttons(GaimConversation *conv, GtkWidget *parent) |
4359 | 3194 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3195 GaimConnection *gc; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3196 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3197 GaimGtkImPane *gtkim; |
4359 | 3198 |
3199 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3200 gtkim = gtkconv->u.im; | |
3201 gc = gaim_conversation_get_gc(conv); | |
3202 | |
3203 /* From right to left... */ | |
3204 | |
3205 /* Send button */ | |
3206 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3207 GAIM_STOCK_SEND, GAIM_CONV_IM); |
4359 | 3208 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); |
3209 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
3210 | |
3211 /* Separator */ | |
3212 if (gtkim->sep2 != NULL) | |
3213 gtk_widget_destroy(gtkim->sep2); | |
3214 | |
3215 gtkim->sep2 = gtk_vseparator_new(); | |
3216 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0); | |
3217 gtk_widget_show(gtkim->sep2); | |
3218 | |
3219 /* Now, um, just kind of all over the place. Huh? */ | |
3220 | |
3221 /* Warn button */ | |
3222 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3223 GAIM_STOCK_WARN, GAIM_CONV_IM); |
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3224 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn, |
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3225 _("Warn the user"), NULL); |
7929 | 3226 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0); |
3227 | |
3228 /* Block button */ | |
3229 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3230 GAIM_STOCK_BLOCK, GAIM_CONV_IM); |
7929 | 3231 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block, |
3232 _("Block the user"), NULL); | |
3233 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0); | |
3234 | |
3235 /* Add button */ | |
3236 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3237 GTK_STOCK_ADD, GAIM_CONV_IM); |
7929 | 3238 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add, |
3239 _("Add the user to your buddy list"), NULL); | |
3240 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0); | |
3241 | |
3242 /* Remove button */ | |
3243 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3244 GTK_STOCK_REMOVE, GAIM_CONV_IM); |
7929 | 3245 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove, |
3246 _("Remove the user from your buddy list"), NULL); | |
3247 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0); | |
4359 | 3248 |
3249 /* Info button */ | |
3250 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info, | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3251 GAIM_STOCK_INFO, GAIM_CONV_IM); |
4359 | 3252 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info, |
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3253 _("Get the user's information"), NULL); |
7929 | 3254 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0); |
3255 | |
3256 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE); | |
3257 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE); | |
3258 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); | |
3259 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); | |
4359 | 3260 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE); |
3261 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); | |
7929 | 3262 |
3263 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn); | |
3264 gtk_size_group_add_widget(gtkconv->sg, gtkim->block); | |
3265 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); | |
3266 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); | |
4359 | 3267 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info); |
3268 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); | |
7929 | 3269 |
3270 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1); | |
3271 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2); | |
3272 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 3); | |
3273 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 4); | |
3274 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 5); | |
4359 | 3275 |
3276 gaim_gtkconv_update_buttons_by_protocol(conv); | |
3277 | |
3278 g_signal_connect(G_OBJECT(gtkim->warn), "clicked", | |
3279 G_CALLBACK(warn_cb), conv); | |
3280 g_signal_connect(G_OBJECT(gtkim->block), "clicked", | |
3281 G_CALLBACK(block_cb), conv); | |
7929 | 3282 g_signal_connect(G_OBJECT(gtkconv->add), "clicked", |
3283 G_CALLBACK(add_remove_cb), conv); | |
3284 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", | |
3285 G_CALLBACK(add_remove_cb), conv); | |
3286 g_signal_connect(G_OBJECT(gtkconv->info), "clicked", | |
3287 G_CALLBACK(info_cb), conv); | |
3288 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", | |
3289 G_CALLBACK(send_cb), conv); | |
4359 | 3290 } |
3291 | |
3292 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3293 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent) |
4359 | 3294 { |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3295 GaimConnection *gc; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3296 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3297 GaimGtkChatPane *gtkchat; |
4359 | 3298 |
3299 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3300 gtkchat = gtkconv->u.chat; | |
3301 gc = gaim_conversation_get_gc(conv); | |
3302 | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3303 /* From right to left... */ |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3304 |
4359 | 3305 /* Send button */ |
3306 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
3307 GAIM_STOCK_SEND, GAIM_CONV_CHAT); | |
3308 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); | |
3309 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
3310 | |
3311 /* Separator */ | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3312 if (gtkchat->sep != NULL) |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3313 gtk_widget_destroy(gtkchat->sep); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3314 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3315 gtkchat->sep = gtk_vseparator_new(); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3316 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
|
3317 gtk_widget_show(gtkchat->sep); |
4359 | 3318 |
3319 /* Invite */ | |
3320 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite, | |
3321 GAIM_STOCK_INVITE, GAIM_CONV_CHAT); | |
3322 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite, | |
3323 _("Invite a user"), NULL); | |
7931 | 3324 gtk_box_pack_start(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0); |
4359 | 3325 |
7929 | 3326 /* Add button */ |
3327 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, | |
3328 GTK_STOCK_ADD, GAIM_CONV_CHAT); | |
3329 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add, | |
3330 _("Add the chat to your buddy list"), NULL); | |
3331 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0); | |
3332 | |
3333 /* Remove button */ | |
3334 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove, | |
3335 GTK_STOCK_REMOVE, GAIM_CONV_CHAT); | |
3336 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove, | |
3337 _("Remove the chat from your buddy list"), NULL); | |
3338 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0); | |
3339 | |
4359 | 3340 /* Set the relief on these. */ |
3341 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE); | |
7929 | 3342 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); |
3343 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); | |
4359 | 3344 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); |
3345 | |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3346 gtk_size_group_add_widget(gtkconv->sg, gtkchat->invite); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3347 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3348 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3349 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3350 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3351 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 1); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3352 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 3); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3353 gtk_box_reorder_child(GTK_BOX(parent), gtkchat->invite, 3); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3354 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3355 gaim_gtkconv_update_buttons_by_protocol(conv); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3356 |
4359 | 3357 /* Callbacks */ |
7929 | 3358 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked", |
3359 G_CALLBACK(invite_cb), conv); | |
3360 g_signal_connect(G_OBJECT(gtkconv->add), "clicked", | |
3361 G_CALLBACK(add_remove_cb), conv); | |
3362 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", | |
3363 G_CALLBACK(add_remove_cb), conv); | |
4359 | 3364 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", |
3365 G_CALLBACK(send_cb), conv); | |
3366 } | |
3367 | |
3368 | |
7971 | 3369 static void topic_callback(GtkWidget *w, GaimConversation *conv) |
3370 { | |
3371 GaimPluginProtocolInfo *prpl_info = NULL; | |
3372 GaimConnection *gc; | |
3373 GaimGtkConversation *gtkconv; | |
3374 GaimGtkChatPane *gtkchat; | |
3375 const char *topic; | |
3376 | |
3377 gc = gaim_conversation_get_gc(conv); | |
3378 | |
3379 if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl))) | |
3380 return; | |
3381 | |
3382 if(prpl_info->set_chat_topic == NULL) | |
3383 return; | |
3384 | |
3385 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3386 gtkchat = gtkconv->u.chat; | |
3387 topic = gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text)); | |
3388 | |
3389 if(!g_utf8_collate(topic, gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv)))) | |
3390 return; | |
3391 | |
3392 prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), topic); | |
3393 } | |
3394 | |
4359 | 3395 static GtkWidget * |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3396 setup_chat_pane(GaimConversation *conv) |
4359 | 3397 { |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3398 GaimPluginProtocolInfo *prpl_info = NULL; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3399 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3400 GaimGtkChatPane *gtkchat; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3401 GaimConnection *gc; |
4359 | 3402 GtkWidget *vpaned, *hpaned; |
3403 GtkWidget *vbox, *hbox; | |
3404 GtkWidget *lbox, *bbox; | |
3405 GtkWidget *label; | |
3406 GtkWidget *list; | |
3407 GtkWidget *button; | |
7949 | 3408 GtkWidget *sw; |
4359 | 3409 GtkListStore *ls; |
3410 GtkCellRenderer *rend; | |
3411 GtkTreeViewColumn *col; | |
8143 | 3412 GList *focus_chain; |
4359 | 3413 |
3414 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3415 gtkchat = gtkconv->u.chat; | |
3416 gc = gaim_conversation_get_gc(conv); | |
3417 | |
3418 /* Setup the outer pane. */ | |
3419 vpaned = gtk_vpaned_new(); | |
3420 gtk_widget_show(vpaned); | |
3421 | |
3422 /* Setup the top part of the pane. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3423 vbox = gtk_vbox_new(FALSE, 6); |
4359 | 3424 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE); |
3425 gtk_widget_show(vbox); | |
3426 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3427 if (gc != NULL) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3428 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3429 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3430 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC) |
4359 | 3431 { |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3432 hbox = gtk_hbox_new(FALSE, 6); |
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3433 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
4359 | 3434 gtk_widget_show(hbox); |
3435 | |
3436 label = gtk_label_new(_("Topic:")); | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3437 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
4359 | 3438 gtk_widget_show(label); |
3439 | |
3440 gtkchat->topic_text = gtk_entry_new(); | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3441 |
7971 | 3442 if(prpl_info->set_chat_topic == NULL) { |
3443 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE); | |
3444 } else { | |
3445 g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate", | |
3446 G_CALLBACK(topic_callback), conv); | |
3447 } | |
3448 | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3449 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0); |
4359 | 3450 gtk_widget_show(gtkchat->topic_text); |
3451 } | |
3452 | |
3453 /* Setup the horizontal pane. */ | |
3454 hpaned = gtk_hpaned_new(); | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3455 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); |
4359 | 3456 gtk_widget_show(hpaned); |
3457 | |
3458 /* Setup the scrolled window to put gtkimhtml in. */ | |
3459 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
3460 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
8076 | 3461 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
4359 | 3462 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), |
3463 GTK_SHADOW_IN); | |
3464 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE); | |
3465 | |
3466 gtk_widget_set_size_request(gtkconv->sw, | |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3467 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3468 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3469 |
4359 | 3470 gtk_widget_show(gtkconv->sw); |
3471 | |
3472 /* Setup gtkihmtml. */ | |
3473 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
3474 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
3475 | |
3476 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3477 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
4359 | 3478 |
3479 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
3480 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
8105 | 3481 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
6057 | 3482 G_CALLBACK(refocus_entry_cb), gtkconv); |
8109 | 3483 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
3484 G_CALLBACK(refocus_entry_cb), gtkconv); | |
4359 | 3485 |
3486 gaim_setup_imhtml(gtkconv->imhtml); | |
3487 | |
3488 gtk_widget_show(gtkconv->imhtml); | |
3489 | |
3490 /* Build the right pane. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3491 lbox = gtk_vbox_new(FALSE, 6); |
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3492 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); |
4359 | 3493 gtk_widget_show(lbox); |
3494 | |
3495 /* Setup the label telling how many people are in the room. */ | |
3496 gtkchat->count = gtk_label_new(_("0 people in room")); | |
3497 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0); | |
3498 gtk_widget_show(gtkchat->count); | |
3499 | |
3500 /* Setup the list of users. */ | |
7949 | 3501 sw = gtk_scrolled_window_new(NULL, NULL); |
3502 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
8076 | 3503 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
7949 | 3504 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
3505 gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0); | |
3506 gtk_widget_show(sw); | |
4359 | 3507 |
3508 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
3509 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
3510 GTK_SORT_ASCENDING); | |
3511 | |
3512 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls)); | |
3513 | |
3514 rend = gtk_cell_renderer_text_new(); | |
3515 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
3516 "text", 0, NULL); | |
3517 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
3518 | |
3519 g_signal_connect(G_OBJECT(list), "button_press_event", | |
3520 G_CALLBACK(right_click_chat_cb), conv); | |
8143 | 3521 g_signal_connect(G_OBJECT(list), "popup-menu", |
3522 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv); | |
4359 | 3523 |
3524 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
3525 | |
3526 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
3527 "text", 1, NULL); | |
3528 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
3529 | |
3530 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
3531 | |
3532 gtk_widget_set_size_request(list, 150, -1); | |
3533 | |
3534 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE); | |
3535 gtk_widget_show(list); | |
3536 | |
3537 gtkchat->list = list; | |
3538 | |
7949 | 3539 gtk_container_add(GTK_CONTAINER(sw), list); |
4359 | 3540 |
3541 /* Setup the user list toolbar. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3542 bbox = gtk_hbox_new(TRUE, 6); |
4359 | 3543 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0); |
3544 gtk_widget_show(bbox); | |
3545 | |
3546 /* IM */ | |
3547 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO, | |
3548 GAIM_BUTTON_VERTICAL); | |
3549 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
3550 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
|
3551 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL); |
4359 | 3552 g_signal_connect(G_OBJECT(button), "clicked", |
7961 | 3553 G_CALLBACK(chat_im_button_cb), conv); |
4359 | 3554 |
3555 gtk_widget_show(button); | |
3556 | |
3557 /* Ignore */ | |
3558 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE, | |
3559 GAIM_BUTTON_VERTICAL); | |
3560 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
3561 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
|
3562 gtk_tooltips_set_tip(gtkconv->tooltips, button, |
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3563 _("Ignore the user"), NULL); |
4359 | 3564 g_signal_connect(G_OBJECT(button), "clicked", |
3565 G_CALLBACK(ignore_cb), conv); | |
3566 gtk_widget_show(button); | |
3567 | |
3568 /* Info */ | |
3569 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO, | |
3570 GAIM_BUTTON_VERTICAL); | |
3571 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
3572 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
3573 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3574 _("Get the user's information"), NULL); |
4359 | 3575 g_signal_connect(G_OBJECT(button), "clicked", |
3576 G_CALLBACK(info_cb), conv); | |
3577 | |
3578 gtk_widget_show(button); | |
3579 | |
3580 gtkconv->info = button; | |
3581 | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3582 /* Build the toolbar. */ |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3583 vbox = gtk_vbox_new(FALSE, 6); |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3584 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE); |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3585 gtk_widget_show(vbox); |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3586 |
8317 | 3587 gtkconv->toolbar = gtk_imhtmltoolbar_new(); |
3588 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
|
3589 |
8123 | 3590 /* Setup the entry widget. |
3591 * We never show the horizontal scrollbar because it was causing weird | |
3592 * lockups when typing text just as you type the character that would | |
3593 * cause both scrollbars to appear. Definitely seems like a gtk bug. | |
3594 */ | |
7949 | 3595 sw = gtk_scrolled_window_new(NULL, NULL); |
3596 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
8112 | 3597 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
8061 | 3598 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
3599 GTK_SHADOW_IN); | |
7949 | 3600 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
3601 gtk_widget_show(sw); | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3602 |
8061 | 3603 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
3604 gtkconv->entry_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
3605 gaim_setup_imhtml(gtkconv->entry); | |
3606 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
3607 default_formatize(conv); | |
5105 | 3608 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
|
3609 gtk_widget_set_size_request(gtkconv->entry, -1, |
8106 | 3610 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height")); |
7949 | 3611 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
3612 | |
3613 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | |
8105 | 3614 G_CALLBACK(entry_key_press_cb), conv); |
4359 | 3615 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
3616 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
3617 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3618 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3619 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
8317 | 3620 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gtkconv->entry); |
4359 | 3621 |
7949 | 3622 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); |
4359 | 3623 gtk_widget_show(gtkconv->entry); |
3624 | |
3625 /* Setup the bottom button box. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3626 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
4359 | 3627 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0); |
3628 gtk_widget_show(gtkconv->bbox); | |
3629 | |
3630 setup_chat_buttons(conv, gtkconv->bbox); | |
3631 | |
8143 | 3632 focus_chain = g_list_prepend (NULL, sw); |
3633 gtk_container_set_focus_chain (GTK_CONTAINER(vbox), focus_chain); | |
4359 | 3634 return vpaned; |
3635 } | |
3636 | |
3637 static GtkWidget * | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3638 setup_im_pane(GaimConversation *conv) |
4359 | 3639 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3640 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3641 GaimGtkImPane *gtkim; |
4359 | 3642 GtkWidget *paned; |
3643 GtkWidget *vbox; | |
3644 GtkWidget *vbox2; | |
7949 | 3645 GtkWidget *sw; |
8143 | 3646 GList *focus_chain; |
4359 | 3647 |
3648 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
3649 gtkim = gtkconv->u.im; | |
3650 | |
3651 /* Setup the outer pane. */ | |
3652 paned = gtk_vpaned_new(); | |
3653 gtk_widget_show(paned); | |
3654 | |
3655 /* Setup the top part of the pane. */ | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3656 vbox = gtk_vbox_new(FALSE, 6); |
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3657 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
4359 | 3658 gtk_widget_show(vbox); |
3659 | |
3660 /* Setup the gtkimhtml widget. */ | |
3661 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
3662 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
8076 | 3663 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
4359 | 3664 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), |
3665 GTK_SHADOW_IN); | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3666 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0); |
4851 | 3667 |
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3668 gtk_widget_set_size_request(gtkconv->sw, |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3669 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), |
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3670 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); |
4359 | 3671 gtk_widget_show(gtkconv->sw); |
3672 | |
3673 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
3674 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
3675 | |
3676 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
3677 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
8105 | 3678 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
6057 | 3679 G_CALLBACK(refocus_entry_cb), gtkconv); |
8109 | 3680 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
3681 G_CALLBACK(refocus_entry_cb), gtkconv); | |
4359 | 3682 |
3683 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3684 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
4359 | 3685 |
3686 gaim_setup_imhtml(gtkconv->imhtml); | |
3687 gtk_widget_show(gtkconv->imhtml); | |
3688 | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3689 vbox2 = gtk_vbox_new(FALSE, 6); |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3690 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE); |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3691 gtk_widget_show(vbox2); |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3692 |
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3693 /* Build the toolbar. */ |
8317 | 3694 gtkconv->toolbar = gtk_imhtmltoolbar_new(); |
3695 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
|
3696 |
8123 | 3697 /* Setup the entry widget. |
3698 * We never show the horizontal scrollbar because it was causing weird | |
3699 * lockups when typing text just as you type the character that would | |
3700 * cause both scrollbars to appear. Definitely seems like a gtk bug. | |
3701 */ | |
7949 | 3702 sw = gtk_scrolled_window_new(NULL, NULL); |
3703 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
8112 | 3704 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
8061 | 3705 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
3706 GTK_SHADOW_IN); | |
7949 | 3707 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0); |
3708 gtk_widget_show(sw); | |
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3709 |
8061 | 3710 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
3711 gtkconv->entry_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
3712 gaim_setup_imhtml(gtkconv->entry); | |
3713 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
3714 default_formatize(conv); | |
5105 | 3715 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
|
3716 gtk_widget_set_size_request(gtkconv->entry, -1, |
8106 | 3717 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height")); |
7949 | 3718 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
|
3719 |
4359 | 3720 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", |
8105 | 3721 G_CALLBACK(entry_key_press_cb), conv); |
4359 | 3722 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
3723 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
3724 | |
3725 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", | |
3726 G_CALLBACK(insert_text_cb), conv); | |
3727 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", | |
3728 G_CALLBACK(delete_text_cb), conv); | |
3729 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3730 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3731 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
4359 | 3732 |
7949 | 3733 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); |
4359 | 3734 gtk_widget_show(gtkconv->entry); |
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
3735 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), |
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
3736 gtkconv->entry); |
4359 | 3737 |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3738 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
4359 | 3739 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0); |
3740 gtk_widget_show(gtkconv->bbox); | |
3741 | |
3742 setup_im_buttons(conv, gtkconv->bbox); | |
3743 | |
8143 | 3744 focus_chain = g_list_prepend (NULL, sw); |
3745 gtk_container_set_focus_chain (GTK_CONTAINER(vbox2), focus_chain); | |
3746 | |
4359 | 3747 return paned; |
3748 } | |
3749 | |
3750 static void | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3751 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
|
3752 GtkSelectionData *sd, guint info, guint t, |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3753 GaimConversation *conv) |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3754 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3755 GaimConvWindow *win = conv->window; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3756 GaimConversation *c; |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3757 |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3758 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3759 { |
4781 | 3760 GaimBlistNode *n = NULL; |
6695 | 3761 GaimBuddy *b; |
4781 | 3762 memcpy(&n, sd->data, sizeof(n)); |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3763 |
6695 | 3764 if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
3765 b = gaim_contact_get_priority_buddy((GaimContact*)n); | |
3766 else if (GAIM_BLIST_NODE_IS_BUDDY(n)) | |
3767 b = (GaimBuddy*)n; | |
3768 else | |
4781 | 3769 return; |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3770 |
7089
2cd3756a637b
[gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
3771 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
|
3772 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3773 gaim_conv_window_add_conversation(win, c); |
4702 | 3774 } |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3775 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
|
3776 { |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3777 char *protocol = NULL; |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3778 char *username = NULL; |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3779 GaimAccount *account; |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3780 |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3781 if (gaim_gtk_parse_x_im_contact(sd->data, FALSE, &account, |
7718 | 3782 &protocol, &username, NULL)) |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3783 { |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3784 if (account == NULL) |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3785 { |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3786 gaim_notify_error(NULL, NULL, |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3787 _("You are not currently signed on with an account that " |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3788 "can add that buddy."), NULL); |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3789 } |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3790 else |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3791 { |
7718 | 3792 c = gaim_conversation_new(GAIM_CONV_IM, account, username); |
3793 gaim_conv_window_add_conversation(win, c); | |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3794 } |
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 |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3797 if (username != NULL) g_free(username); |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3798 if (protocol != NULL) g_free(protocol); |
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 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3801 } |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3802 } |
4359 | 3803 |
3804 /************************************************************************** | |
3805 * GTK+ window ops | |
3806 **************************************************************************/ | |
3807 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3808 gaim_gtk_new_window(GaimConvWindow *win) |
4359 | 3809 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3810 GaimGtkWindow *gtkwin; |
4359 | 3811 GtkPositionType pos; |
3812 GtkWidget *testidea; | |
3813 GtkWidget *menubar; | |
3814 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3815 gtkwin = g_malloc0(sizeof(GaimGtkWindow)); |
4359 | 3816 |
3817 win->ui_data = gtkwin; | |
3818 | |
3819 /* Create the window. */ | |
3820 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
3821 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation"); | |
4635 | 3822 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE); |
4510
4c394222c732
[gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents:
4505
diff
changeset
|
3823 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0); |
5173 | 3824 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE; |
4359 | 3825 gtk_widget_realize(gtkwin->window); |
3826 | |
3827 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event", | |
3828 G_CALLBACK(close_win_cb), win); | |
3829 | |
3830 /* Create the notebook. */ | |
3831 gtkwin->notebook = gtk_notebook_new(); | |
3832 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3833 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side"); |
4359 | 3834 |
3835 #if 0 | |
3836 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
3837 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
3838 #endif | |
3839 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); | |
3840 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE); | |
3841 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook)); | |
4818 | 3842 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE); |
3843 | |
4359 | 3844 gtk_widget_show(gtkwin->notebook); |
3845 | |
8189 | 3846 g_signal_connect(G_OBJECT(gtkwin->notebook), "switch_page", |
3847 G_CALLBACK(before_switch_conv_cb), win); | |
4359 | 3848 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page", |
3849 G_CALLBACK(switch_conv_cb), win); | |
3850 | |
3851 /* Setup the tab drag and drop signals. */ | |
4486 | 3852 gtk_widget_add_events(gtkwin->notebook, |
3853 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); | |
3854 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event", | |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3855 G_CALLBACK(notebook_press_cb), win); |
4486 | 3856 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event", |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3857 G_CALLBACK(notebook_release_cb), win); |
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3858 |
4359 | 3859 testidea = gtk_vbox_new(FALSE, 0); |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3860 |
4359 | 3861 /* Setup the menubar. */ |
3862 menubar = setup_menubar(win); | |
3863 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0); | |
3864 | |
3865 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0); | |
3866 | |
3867 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea); | |
3868 | |
3869 gtk_widget_show(testidea); | |
3870 } | |
3871 | |
3872 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3873 gaim_gtk_destroy_window(GaimConvWindow *win) |
4359 | 3874 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3875 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3876 |
3877 gtk_widget_destroy(gtkwin->window); | |
3878 | |
4630 | 3879 g_object_unref(G_OBJECT(gtkwin->menu.item_factory)); |
3880 | |
4359 | 3881 g_free(gtkwin); |
3882 win->ui_data = NULL; | |
3883 } | |
3884 | |
3885 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3886 gaim_gtk_show(GaimConvWindow *win) |
4359 | 3887 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3888 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3889 |
3890 gtk_widget_show(gtkwin->window); | |
7413 | 3891 |
3892 #ifdef _WIN32 | |
7415 | 3893 /* This works around a win32 gtk+ bug, where it can't handle |
3894 * creating the button correctly before the window is shown. | |
3895 * That's why we get the appearance of a button, without all | |
3896 * the normal button-like properties, like being able to click | |
7413 | 3897 * it. ;-) --Nathan */ |
7414 | 3898 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) { |
3899 GaimConversation *conv; | |
3900 GaimGtkConversation *gtkconv; | |
3901 | |
3902 conv = gaim_conv_window_get_conversation_at(win, 0); | |
3903 if(conv) { | |
3904 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
7415 | 3905 gtk_widget_hide(gtkconv->close); |
7414 | 3906 gtk_widget_show_all(gtkconv->close); |
3907 } | |
3908 } | |
7413 | 3909 #endif |
4359 | 3910 } |
3911 | |
3912 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3913 gaim_gtk_hide(GaimConvWindow *win) |
4359 | 3914 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3915 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3916 |
3917 gtk_widget_hide(gtkwin->window); | |
3918 } | |
3919 | |
3920 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3921 gaim_gtk_raise(GaimConvWindow *win) |
4359 | 3922 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3923 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3924 |
5484 | 3925 gtk_widget_show(gtkwin->window); |
5103 | 3926 gtk_window_deiconify(GTK_WINDOW(gtkwin->window)); |
4526 | 3927 gdk_window_raise(gtkwin->window->window); |
4359 | 3928 } |
3929 | |
3930 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3931 gaim_gtk_flash(GaimConvWindow *win) |
4359 | 3932 { |
3933 #ifdef _WIN32 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3934 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3935 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3936 wgaim_conv_im_blink(gtkwin->window); |
4359 | 3937 #endif |
3938 } | |
3939 | |
3940 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3941 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index) |
4359 | 3942 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3943 GaimGtkWindow *gtkwin; |
4359 | 3944 |
3945 gtkwin = GAIM_GTK_WINDOW(win); | |
3946 | |
3947 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
3948 } | |
3949 | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3950 static const GtkTargetEntry te[] = |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3951 { |
7695 | 3952 {"text/plain", 0, 0}, |
3953 {"text/uri-list", 0, 1}, | |
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3954 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 2}, |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3955 {"STRING", 0, 3}, |
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3956 {"application/x-im-contact", 0, 4} |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3957 }; |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3958 |
4359 | 3959 static void |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3960 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv) |
4359 | 3961 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3962 GaimGtkWindow *gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3963 GaimGtkConversation *gtkconv, *focus_gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3964 GaimConversation *focus_conv; |
4359 | 3965 GtkWidget *pane = NULL; |
3966 GtkWidget *tab_cont; | |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3967 GtkWidget *tabby, *menu_tabby; |
4359 | 3968 gboolean new_ui; |
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3969 GaimConversationType conv_type; |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3970 const char *name; |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3971 |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3972 name = gaim_conversation_get_name(conv); |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3973 conv_type = gaim_conversation_get_type(conv); |
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3974 gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 3975 |
3976 if (conv->ui_data != NULL) { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3977 gtkconv = (GaimGtkConversation *)conv->ui_data; |
4359 | 3978 |
3979 tab_cont = gtkconv->tab_cont; | |
3980 | |
3981 new_ui = FALSE; | |
3982 } | |
3983 else { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3984 gtkconv = g_malloc0(sizeof(GaimGtkConversation)); |
4359 | 3985 conv->ui_data = gtkconv; |
3986 | |
3987 /* Setup some initial variables. */ | |
3988 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
3989 gtkconv->tooltips = gtk_tooltips_new(); | |
3990 | |
4421 | 3991 /* Setup the foreground and background colors */ |
3992 gaim_gtkconv_update_font_colors(conv); | |
3993 | |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
3994 /* Setup the font face */ |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
3995 gaim_gtkconv_update_font_face(conv); |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
3996 |
7879 | 3997 if (conv_type == GAIM_CONV_IM) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3998 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane)); |
4359 | 3999 gtkconv->u.im->a_virgin = TRUE; |
4000 | |
4001 pane = setup_im_pane(conv); | |
4002 } | |
7879 | 4003 else if (conv_type == GAIM_CONV_CHAT) { |
4004 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane)); | |
4005 | |
4006 pane = setup_chat_pane(conv); | |
4007 } | |
4359 | 4008 |
4009 if (pane == NULL) { | |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4010 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat); |
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4011 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im); |
4359 | 4012 |
4013 g_free(gtkconv); | |
4014 conv->ui_data = NULL; | |
4015 | |
4016 return; | |
4017 } | |
4018 | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4019 /* Setup drag-and-drop */ |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4020 gtk_drag_dest_set(pane, |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4021 GTK_DEST_DEFAULT_MOTION | |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4022 GTK_DEST_DEFAULT_DROP, |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4023 te, sizeof(te) / sizeof(GtkTargetEntry), |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4024 GDK_ACTION_COPY); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4025 gtk_drag_dest_set(gtkconv->imhtml, |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4026 GTK_DEST_DEFAULT_MOTION | |
4702 | 4027 GTK_DEST_DEFAULT_DROP, |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4028 te, sizeof(te) / sizeof(GtkTargetEntry), |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4029 GDK_ACTION_DEFAULT | GDK_ACTION_COPY | GDK_ACTION_MOVE); |
7695 | 4030 gtk_drag_dest_set(gtkconv->entry, |
4031 GTK_DEST_DEFAULT_MOTION | | |
4032 GTK_DEST_DEFAULT_DROP, | |
4033 te, sizeof(te) / sizeof(GtkTargetEntry), | |
4034 GDK_ACTION_COPY); | |
4035 | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4036 g_signal_connect(G_OBJECT(pane), "drag_data_received", |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4037 G_CALLBACK(conv_dnd_recv), conv); |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4038 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", |
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4039 G_CALLBACK(conv_dnd_recv), conv); |
8105 | 4040 #if 0 |
4041 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", | |
4042 G_CALLBACK(conv_dnd_recv), conv); | |
4043 #endif | |
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4044 |
4359 | 4045 /* Setup the container for the tab. */ |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4046 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 6); |
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4047 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 6); |
4359 | 4048 gtk_container_add(GTK_CONTAINER(tab_cont), pane); |
4049 gtk_widget_show(pane); | |
4050 | |
4051 new_ui = TRUE; | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4052 |
4359 | 4053 gtkconv->make_sound = TRUE; |
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
4054 |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4055 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool( |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4056 "/gaim/gtk/conversations/show_formatting_toolbar"); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4057 |
8329
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4058 if (gtkconv->show_formatting_toolbar) |
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4059 gtk_widget_show(gtkconv->toolbar); |
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4060 |
8176 | 4061 g_signal_connect_swapped(G_OBJECT(pane), "focus", |
4062 G_CALLBACK(gtk_widget_grab_focus), | |
4063 gtkconv->entry); | |
4359 | 4064 } |
4065 | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4066 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 6); |
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4067 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 6); |
4359 | 4068 |
4069 /* Close button. */ | |
4070 gtkconv->close = gtk_button_new(); | |
4071 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
|
4072 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE); |
4359 | 4073 gtk_container_add(GTK_CONTAINER(gtkconv->close), |
4445 | 4074 gtk_image_new_from_stock(GTK_STOCK_CLOSE, |
4075 GTK_ICON_SIZE_MENU)); | |
4359 | 4076 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, |
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4077 _("Close conversation"), NULL); |
4359 | 4078 |
4079 g_signal_connect(G_OBJECT(gtkconv->close), "clicked", | |
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4080 G_CALLBACK(close_conv_cb), conv); |
4359 | 4081 |
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4082 /* |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4083 * 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
|
4084 * border bug. I love you guys! -- ChipX86 |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4085 */ |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4086 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed", |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4087 G_CALLBACK(tab_close_button_state_changed_cb), NULL); |
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4088 |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4089 /* Status icon. */ |
6440 | 4090 gtkconv->icon = gtk_image_new(); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4091 gtkconv->menu_icon = gtk_image_new(); |
6440 | 4092 update_tab_icon(conv); |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4093 |
4359 | 4094 /* Tab label. */ |
4095 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
|
4096 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); |
4359 | 4097 #if 0 |
4098 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); | |
4099 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); | |
4100 #endif | |
4101 | |
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
4102 |
4359 | 4103 /* Pack it all together. */ |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4104 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
|
4105 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
|
4106 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
|
4107 gtk_widget_show_all(gtkconv->icon); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4108 gtk_widget_show_all(gtkconv->menu_icon); |
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4109 } |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4110 |
4359 | 4111 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
|
4112 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); |
4445 | 4113 gtk_widget_show(gtkconv->tab_label); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4114 gtk_widget_show(gtkconv->menu_label); |
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4115 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
|
4116 |
4445 | 4117 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
|
4118 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) |
4445 | 4119 gtk_widget_show_all(gtkconv->close); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4120 |
4445 | 4121 gtk_widget_show(tabby); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4122 gtk_widget_show(menu_tabby); |
4359 | 4123 |
7143 | 4124 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
4125 gaim_gtkconv_update_buddy_icon(conv); | |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4126 |
4359 | 4127 /* Add this pane to the conversations notebook. */ |
4128 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
|
4129 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, menu_tabby); |
4359 | 4130 |
4131 gtk_widget_show(tab_cont); | |
4132 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4133 if (gaim_conv_window_get_conversation_count(win) == 1) { |
4818 | 4134 /* Er, bug in notebooks? Switch to the page manually. */ |
4359 | 4135 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0); |
4851 | 4136 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4137 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4138 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4139 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4140 else |
4818 | 4141 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE); |
4359 | 4142 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4143 focus_conv = g_list_nth_data(gaim_conv_window_get_conversations(win), |
5204 | 4144 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook))); |
4145 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv); | |
4146 gtk_widget_grab_focus(focus_gtkconv->entry); | |
4359 | 4147 |
4148 if (!new_ui) | |
4149 g_object_unref(gtkconv->tab_cont); | |
4150 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4151 if (gaim_conv_window_get_conversation_count(win) == 1) |
4685 | 4152 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
4359 | 4153 } |
4154 | |
4155 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4156 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv) |
4359 | 4157 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4158 GaimGtkWindow *gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4159 GaimGtkConversation *gtkconv; |
4359 | 4160 unsigned int index; |
4818 | 4161 GaimConversationType conv_type; |
4162 | |
4163 conv_type = gaim_conversation_get_type(conv); | |
4359 | 4164 index = gaim_conversation_get_index(conv); |
4165 | |
4166 gtkwin = GAIM_GTK_WINDOW(win); | |
4167 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4168 | |
4169 g_object_ref(gtkconv->tab_cont); | |
4170 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont)); | |
4171 | |
4172 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
4173 | |
4818 | 4174 /* go back to tabless if need be */ |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4175 if (gaim_conv_window_get_conversation_count(win) <= 2) { |
4818 | 4176 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4177 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
4818 | 4178 } |
4179 | |
4180 | |
4359 | 4181 /* If this window is setup with an inactive gc, regenerate the menu. */ |
4818 | 4182 if (conv_type == GAIM_CONV_IM && |
4359 | 4183 gaim_conversation_get_gc(conv) == NULL) { |
4184 | |
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
4185 generate_send_as_items(win, conv); |
4359 | 4186 } |
4187 } | |
4188 | |
4189 static void | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4190 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv, |
4359 | 4191 unsigned int new_index) |
4192 { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4193 GaimGtkWindow *gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4194 GaimGtkConversation *gtkconv; |
4359 | 4195 |
4196 gtkwin = GAIM_GTK_WINDOW(win); | |
4197 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4198 | |
4415
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4199 if (new_index > gaim_conversation_get_index(conv)) |
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4200 new_index--; |
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4201 |
4359 | 4202 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook), |
4203 gtkconv->tab_cont, new_index); | |
4204 } | |
4205 | |
4206 static int | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4207 gaim_gtk_get_active_index(const GaimConvWindow *win) |
4359 | 4208 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4209 GaimGtkWindow *gtkwin; |
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4210 int index; |
4359 | 4211 |
4212 gtkwin = GAIM_GTK_WINDOW(win); | |
4213 | |
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4214 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)); |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4215 |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4216 /* |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4217 * A fix, because the first conversation may be active, but not |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4218 * appear in the notebook just yet. -- ChipX86 |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4219 */ |
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4220 return (index == -1 ? 0 : index); |
4359 | 4221 } |
4222 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4223 static GaimConvWindowUiOps window_ui_ops = |
4359 | 4224 { |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4225 gaim_gtk_conversations_get_conv_ui_ops, |
4359 | 4226 gaim_gtk_new_window, |
4227 gaim_gtk_destroy_window, | |
4228 gaim_gtk_show, | |
4229 gaim_gtk_hide, | |
4230 gaim_gtk_raise, | |
4231 gaim_gtk_flash, | |
4232 gaim_gtk_switch_conversation, | |
4233 gaim_gtk_add_conversation, | |
4234 gaim_gtk_remove_conversation, | |
4235 gaim_gtk_move_conversation, | |
4236 gaim_gtk_get_active_index | |
4237 }; | |
4238 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4239 GaimConvWindowUiOps * |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4240 gaim_gtk_conversations_get_win_ui_ops(void) |
4359 | 4241 { |
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4242 return &window_ui_ops; |
4359 | 4243 } |
4244 | |
4245 /************************************************************************** | |
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4246 * Conversation UI operations |
4359 | 4247 **************************************************************************/ |
4248 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4249 gaim_gtkconv_destroy(GaimConversation *conv) |
4359 | 4250 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4251 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
4359 | 4252 |
4253 if (gtkconv->dialogs.log != NULL) | |
4254 gtk_widget_destroy(gtkconv->dialogs.log); | |
4255 | |
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4256 gtk_widget_destroy(gtkconv->tab_cont); |
4892 | 4257 g_object_unref(gtkconv->tab_cont); |
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4258 |
4359 | 4259 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
4755 | 4260 if (gtkconv->u.im->icon_timer != 0) |
4261 g_source_remove(gtkconv->u.im->icon_timer); | |
4262 | |
4359 | 4263 if (gtkconv->u.im->save_icon != NULL) |
4264 gtk_widget_destroy(gtkconv->u.im->save_icon); | |
4265 | |
4266 if (gtkconv->u.im->anim != NULL) | |
4793 | 4267 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
4359 | 4268 |
4269 g_free(gtkconv->u.im); | |
4270 } | |
4271 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
4272 g_free(gtkconv->u.chat); | |
4273 } | |
4274 | |
4633 | 4275 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips)); |
4276 | |
4359 | 4277 g_free(gtkconv); |
4278 } | |
4279 | |
4280 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4281 gaim_gtkconv_write_im(GaimConversation *conv, const char *who, |
6982 | 4282 const char *message, GaimMessageFlags flags, |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4283 time_t mtime) |
4359 | 4284 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4285 GaimGtkConversation *gtkconv; |
4359 | 4286 |
4287 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4288 | |
6621 | 4289 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4290 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4291 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4292 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4293 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4294 |
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4295 /* Play a sound, if specified in prefs. */ |
4359 | 4296 if (gtkconv->make_sound) { |
6621 | 4297 if (flags & GAIM_MESSAGE_RECV) { |
4359 | 4298 if (gtkconv->u.im->a_virgin && |
5820 | 4299 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) { |
4359 | 4300 |
4561 | 4301 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE); |
4359 | 4302 } |
4303 else | |
4561 | 4304 gaim_sound_play_event(GAIM_SOUND_RECEIVE); |
4359 | 4305 } |
4306 else { | |
4561 | 4307 gaim_sound_play_event(GAIM_SOUND_SEND); |
4359 | 4308 } |
4309 } | |
4310 | |
4311 gtkconv->u.im->a_virgin = FALSE; | |
4312 | |
6982 | 4313 gaim_conversation_write(conv, who, message, flags, mtime); |
4359 | 4314 } |
4315 | |
4316 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4317 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who, |
6621 | 4318 const char *message, GaimMessageFlags flags, time_t mtime) |
4359 | 4319 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4320 GaimGtkConversation *gtkconv; |
4359 | 4321 |
4322 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4323 | |
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4324 /* Play a sound, if specified in prefs. */ |
4359 | 4325 if (gtkconv->make_sound) { |
6621 | 4326 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND)) |
4561 | 4327 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY); |
6621 | 4328 else if (flags & GAIM_MESSAGE_RECV) { |
4329 if ((flags & GAIM_MESSAGE_NICK) && | |
6102 | 4330 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) { |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4331 |
4561 | 4332 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4333 } |
4359 | 4334 else |
4561 | 4335 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY); |
4359 | 4336 } |
4337 } | |
4338 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4339 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks")) |
6621 | 4340 flags |= GAIM_MESSAGE_COLORIZE; |
4359 | 4341 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4342 /* Raise the window, if specified in prefs. */ |
6621 | 4343 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4344 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) { |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4345 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4346 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4347 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4348 |
6982 | 4349 gaim_conversation_write(conv, who, message, flags, mtime); |
4359 | 4350 } |
4351 | |
4352 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4353 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who, |
6982 | 4354 const char *message, GaimMessageFlags flags, |
4359 | 4355 time_t mtime) |
4356 { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4357 GaimGtkConversation *gtkconv; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4358 GaimConvWindow *win; |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4359 GaimConnection *gc; |
4359 | 4360 int gtk_font_options = 0; |
6982 | 4361 GSList *images = NULL; |
7440 | 4362 char buf[BUF_LONG]; |
4359 | 4363 char buf2[BUF_LONG]; |
4364 char mdate[64]; | |
4365 char color[10]; | |
4366 char *str; | |
4367 char *with_font_tag; | |
4896 | 4368 char *sml_attrib = NULL; |
6982 | 4369 size_t length = strlen(message) + 1; |
4895 | 4370 |
4359 | 4371 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4372 gc = gaim_conversation_get_gc(conv); | |
4373 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4374 win = gaim_conversation_get_window(conv); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4375 |
6621 | 4376 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
7431 | 4377 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
4378 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) || | |
4379 (gaim_conversation_get_type(conv) == GAIM_CONV_IM && | |
4380 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") || | |
4381 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
|
4382 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4383 gaim_conv_window_show(win); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4384 } |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4385 |
7078 | 4386 if (flags & GAIM_MESSAGE_IMAGES) |
4387 gaim_gtk_find_images(message, &images); | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4388 |
5133 | 4389 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */ |
4390 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime)); | |
4391 else | |
4392 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); | |
4359 | 4393 |
4896 | 4394 if(gc) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4395 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name); |
7440 | 4396 |
4359 | 4397 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS; |
4398 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4399 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors")) |
4359 | 4400 gtk_font_options ^= GTK_IMHTML_NO_COLOURS; |
4401 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4402 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts")) |
4359 | 4403 gtk_font_options ^= GTK_IMHTML_NO_FONTS; |
4404 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4405 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes")) |
4359 | 4406 gtk_font_options ^= GTK_IMHTML_NO_SIZES; |
4407 | |
7956 | 4408 /* this is gonna crash one day, I can feel it. */ |
4409 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(conv->account)))->options & | |
7431 | 4410 OPT_PROTO_USE_POINTSIZE) { |
5367 | 4411 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE; |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4412 } |
4359 | 4413 |
6621 | 4414 if (flags & GAIM_MESSAGE_SYSTEM) { |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4415 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
8380 | 4416 g_snprintf(buf, BUF_LONG, "<FONT SIZE=\"2\">(%s)</FONT> <B>%s</B>", |
7431 | 4417 mdate, message); |
4359 | 4418 else |
4419 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message); | |
7440 | 4420 |
4359 | 4421 g_snprintf(buf2, sizeof(buf2), |
8380 | 4422 "<FONT %s><FONT SIZE=\2\"><!--(%s) --></FONT><B>%s</B></FONT><BR>", |
7850 | 4423 sml_attrib, mdate, message); |
7440 | 4424 |
6982 | 4425 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images); |
7440 | 4426 |
7583 | 4427 /* Add the message to a conversations scrollback buffer */ |
4428 conv->history = g_string_append(conv->history, buf); | |
4429 conv->history = g_string_append(conv->history, "<BR>\n"); | |
7440 | 4430 |
7431 | 4431 } else if (flags & GAIM_MESSAGE_NO_LOG) { |
4359 | 4432 g_snprintf(buf, BUF_LONG, |
7850 | 4433 "<B><FONT %s COLOR=\"#777777\">%s</FONT></B><BR>", |
4434 sml_attrib, message); | |
7440 | 4435 |
6982 | 4436 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf, 0, images); |
4359 | 4437 } |
4438 else { | |
4895 | 4439 char *new_message = g_memdup(message, length); |
7440 | 4440 |
6621 | 4441 if (flags & GAIM_MESSAGE_WHISPER) { |
4359 | 4442 str = g_malloc(1024); |
7440 | 4443 |
4359 | 4444 /* If we're whispering, it's not an autoresponse. */ |
7564 | 4445 if (gaim_message_meify(new_message, length)) { |
4359 | 4446 g_snprintf(str, 1024, "***%s", who); |
4447 strcpy(color, "#6C2585"); | |
4448 } | |
4449 else { | |
4450 g_snprintf(str, 1024, "*%s*:", who); | |
4451 strcpy(color, "#00FF00"); | |
4452 } | |
7440 | 4453 } |
4359 | 4454 else { |
7564 | 4455 if (gaim_message_meify(new_message, length)) { |
4359 | 4456 str = g_malloc(1024); |
7440 | 4457 |
6621 | 4458 if (flags & GAIM_MESSAGE_AUTO_RESP) |
4359 | 4459 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who); |
4460 else | |
4461 g_snprintf(str, 1024, "***%s", who); | |
7440 | 4462 |
6621 | 4463 if (flags & GAIM_MESSAGE_NICK) |
4359 | 4464 strcpy(color, "#AF7F00"); |
4465 else | |
4466 strcpy(color, "#062585"); | |
4467 } | |
4468 else { | |
4469 str = g_malloc(1024); | |
6621 | 4470 if (flags & GAIM_MESSAGE_AUTO_RESP) |
4359 | 4471 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE); |
4472 else | |
4473 g_snprintf(str, 1024, "%s:", who); | |
6621 | 4474 if (flags & GAIM_MESSAGE_NICK) |
4359 | 4475 strcpy(color, "#AF7F00"); |
6621 | 4476 else if (flags & GAIM_MESSAGE_RECV) { |
4477 if (flags & GAIM_MESSAGE_COLORIZE) { | |
4359 | 4478 const char *u; |
4479 int m = 0; | |
7440 | 4480 |
4359 | 4481 for (u = who; *u != '\0'; u++) |
4482 m += *u; | |
7440 | 4483 |
4359 | 4484 m = m % NUM_NICK_COLORS; |
7440 | 4485 |
4359 | 4486 strcpy(color, nick_colors[m]); |
4487 } | |
4488 else | |
7854 | 4489 strcpy(color, RECV_COLOR); |
4359 | 4490 } |
6621 | 4491 else if (flags & GAIM_MESSAGE_SEND) |
7854 | 4492 strcpy(color, SEND_COLOR); |
4359 | 4493 } |
4494 } | |
7440 | 4495 |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4496 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
4359 | 4497 g_snprintf(buf, BUF_LONG, |
8380 | 4498 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\">(%s)</FONT> " |
7431 | 4499 "<B>%s</B></FONT> ", color, |
4500 sml_attrib ? sml_attrib : "", mdate, str); | |
4359 | 4501 else |
4502 g_snprintf(buf, BUF_LONG, | |
7431 | 4503 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color, |
4504 sml_attrib ? sml_attrib : "", str); | |
7440 | 4505 |
4359 | 4506 g_snprintf(buf2, BUF_LONG, |
8380 | 4507 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>" |
7431 | 4508 "<B>%s</B></FONT> ", |
4509 color, sml_attrib ? sml_attrib : "", mdate, str); | |
7440 | 4510 |
4359 | 4511 g_free(str); |
4512 | |
6982 | 4513 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images); |
4359 | 4514 |
4895 | 4515 if(gc){ |
4896 | 4516 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : ""); |
4895 | 4517 char *post = "</font>"; |
4518 int pre_len = strlen(pre); | |
4519 int post_len = strlen(post); | |
7440 | 4520 |
4895 | 4521 with_font_tag = g_malloc(length + pre_len + post_len + 1); |
7440 | 4522 |
4895 | 4523 strcpy(with_font_tag, pre); |
4524 memcpy(with_font_tag + pre_len, new_message, length); | |
4525 strcpy(with_font_tag + pre_len + length, post); | |
7440 | 4526 |
4895 | 4527 length += pre_len + post_len; |
4528 g_free(pre); | |
4529 } | |
4608 | 4530 else |
4895 | 4531 with_font_tag = g_memdup(new_message, length); |
7440 | 4532 |
7589 | 4533 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
7431 | 4534 with_font_tag, gtk_font_options, images); |
7440 | 4535 |
6982 | 4536 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0); |
7440 | 4537 |
7431 | 4538 /*conv->history = g_string_append(conv->history, t1); |
4539 conv->history = g_string_append(conv->history, t2); | |
4540 conv->history = g_string_append(conv->history, "\n"); | |
7440 | 4541 |
7431 | 4542 g_free(t1); |
4543 g_free(t2); */ | |
7440 | 4544 |
4545 g_free(with_font_tag); | |
7447 | 4546 g_free(new_message); |
7440 | 4547 } |
4548 | |
6062 | 4549 |
5012 | 4550 if(sml_attrib) |
4551 g_free(sml_attrib); | |
6982 | 4552 |
4553 if (images) { | |
7078 | 4554 GSList *tmp; |
4555 | |
4556 for (tmp = images; tmp; tmp = tmp->next) { | |
4557 GdkPixbuf *pixbuf = tmp->data; | |
4558 if(pixbuf) | |
4559 g_object_unref(pixbuf); | |
6982 | 4560 } |
7078 | 4561 |
6982 | 4562 g_slist_free(images); |
4563 } | |
4359 | 4564 } |
4565 | |
4566 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4567 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user) |
4359 | 4568 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4569 GaimConvChat *chat; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4570 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4571 GaimGtkChatPane *gtkchat; |
4359 | 4572 char tmp[BUF_LONG]; |
4573 int num_users; | |
4574 int pos; | |
4575 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4576 chat = GAIM_CONV_CHAT(conv); |
4359 | 4577 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4578 gtkchat = gtkconv->u.chat; | |
4579 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4580 num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
4359 | 4581 |
4582 g_snprintf(tmp, sizeof(tmp), | |
4583 ngettext("%d person in room", "%d people in room", | |
4584 num_users), | |
4585 num_users); | |
4586 | |
4587 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
4588 | |
4589 if (gtkconv->make_sound) | |
4561 | 4590 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN); |
4359 | 4591 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4592 pos = g_list_index(gaim_conv_chat_get_users(chat), user); |
4359 | 4593 |
4594 add_chat_buddy_common(conv, user, pos); | |
4595 } | |
4596 | |
4597 static void | |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4598 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4599 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4600 GaimConvChat *chat; |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4601 GaimGtkConversation *gtkconv; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4602 GaimGtkChatPane *gtkchat; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4603 GList *l; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4604 char tmp[BUF_LONG]; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4605 int num_users; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4606 int pos; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4607 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4608 chat = GAIM_CONV_CHAT(conv); |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4609 gtkconv = GAIM_GTK_CONVERSATION(conv); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4610 gtkchat = gtkconv->u.chat; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4611 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4612 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
|
4613 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4614 g_snprintf(tmp, sizeof(tmp), |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4615 ngettext("%d person in room", "%d people in room", |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4616 num_users), |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4617 num_users); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4618 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4619 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4620 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4621 for (l = users; l != NULL; l = l->next) { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4622 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
|
4623 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4624 add_chat_buddy_common(conv, (char *)l->data, pos); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4625 } |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4626 } |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4627 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4628 static void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4629 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name, |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4630 const char *new_name) |
4359 | 4631 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4632 GaimConvChat *chat; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4633 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4634 GaimGtkChatPane *gtkchat; |
4359 | 4635 GtkTreeIter iter; |
4636 GtkTreeModel *model; | |
4637 GList *names; | |
4638 int pos; | |
4639 int f = 1; | |
4640 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4641 chat = GAIM_CONV_CHAT(conv); |
4359 | 4642 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4643 gtkchat = gtkconv->u.chat; | |
4644 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4645 for (names = gaim_conv_chat_get_users(chat); |
4359 | 4646 names != NULL; |
4647 names = names->next) { | |
4648 | |
4649 char *u = (char *)names->data; | |
4650 | |
4793 | 4651 if (!gaim_utf8_strcasecmp(u, old_name)) { |
4359 | 4652 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
4653 | |
4654 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
4655 break; | |
4656 | |
4657 while (f != 0) { | |
4658 char *val; | |
4659 | |
4660 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
4661 | |
4793 | 4662 if (!gaim_utf8_strcasecmp(old_name, val)) { |
4359 | 4663 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
4640 | 4664 break; |
4665 } | |
4359 | 4666 |
4667 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
4668 | |
4669 g_free(val); | |
4670 } | |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4671 |
4359 | 4672 break; |
4673 } | |
4674 } | |
4675 | |
4676 if (!names) | |
4677 return; | |
4678 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4679 pos = g_list_index(gaim_conv_chat_get_users(chat), new_name); |
4359 | 4680 |
4681 add_chat_buddy_common(conv, new_name, pos); | |
4682 } | |
4683 | |
4684 static void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4685 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user) |
4359 | 4686 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4687 GaimConvChat *chat; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4688 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4689 GaimGtkChatPane *gtkchat; |
4359 | 4690 GtkTreeIter iter; |
4691 GtkTreeModel *model; | |
4692 GList *names; | |
4693 char tmp[BUF_LONG]; | |
4694 int num_users; | |
4695 int f = 1; | |
4696 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4697 chat = GAIM_CONV_CHAT(conv); |
4359 | 4698 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4699 gtkchat = gtkconv->u.chat; | |
4700 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4701 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
|
4702 |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4703 for (names = gaim_conv_chat_get_users(chat); |
4359 | 4704 names != NULL; |
4705 names = names->next) { | |
4706 | |
4707 char *u = (char *)names->data; | |
4708 | |
4793 | 4709 if (!gaim_utf8_strcasecmp(u, user)) { |
4359 | 4710 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
4711 | |
4712 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
4713 break; | |
4714 | |
4715 while (f != 0) { | |
4716 char *val; | |
4717 | |
4718 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
4719 | |
4793 | 4720 if (!gaim_utf8_strcasecmp(user, val)) |
4359 | 4721 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
4722 | |
4723 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
4724 | |
4725 g_free(val); | |
4726 } | |
4727 | |
4728 break; | |
4729 } | |
4730 } | |
4731 | |
4732 if (names == NULL) | |
4733 return; | |
4734 | |
4735 g_snprintf(tmp, sizeof(tmp), | |
4736 ngettext("%d person in room", "%d people in room", | |
4737 num_users), num_users); | |
4738 | |
4739 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
4740 | |
4741 if (gtkconv->make_sound) | |
4561 | 4742 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE); |
4359 | 4743 } |
4744 | |
4745 static void | |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4746 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4747 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4748 GaimConvChat *chat; |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4749 GaimGtkConversation *gtkconv; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4750 GaimGtkChatPane *gtkchat; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4751 GtkTreeIter iter; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4752 GtkTreeModel *model; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4753 GList *names = NULL; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4754 GList *l; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4755 char tmp[BUF_LONG]; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4756 int num_users; |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4757 gboolean f; |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4758 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4759 chat = GAIM_CONV_CHAT(conv); |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4760 gtkconv = GAIM_GTK_CONVERSATION(conv); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4761 gtkchat = gtkconv->u.chat; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4762 |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4763 num_users = g_list_length(gaim_conv_chat_get_users(chat)) - |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4764 g_list_length(users); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4765 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4766 for (l = users; l != NULL; l = l->next) { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4767 for (names = gaim_conv_chat_get_users(chat); |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4768 names != NULL; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4769 names = names->next) { |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4770 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4771 char *u = (char *)names->data; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4772 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4773 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) { |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4774 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4775 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4776 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4777 &iter)) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4778 break; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4779 |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4780 do { |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4781 char *val; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4782 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4783 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4784 1, &val, -1); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4785 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4786 if (!gaim_utf8_strcasecmp((char *)l->data, val)) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4787 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4788 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4789 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
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 g_free(val); |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4792 } while (f); |
7431 | 4793 |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4794 break; |
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 } |
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 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4799 if (names == NULL) |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4800 return; |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4801 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4802 g_snprintf(tmp, sizeof(tmp), |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4803 ngettext("%d person in room", "%d people in room", |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4804 num_users), num_users); |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4805 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4806 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
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 |
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4809 static void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4810 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) |
4359 | 4811 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4812 GaimConvWindow *win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4813 GaimGtkWindow *gtkwin; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4814 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4815 GaimGtkChatPane *gtkchat; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4816 GaimConvChat *chat; |
4359 | 4817 |
4818 win = gaim_conversation_get_window(conv); | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4819 gtkwin = GAIM_GTK_WINDOW(win); |
4359 | 4820 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4821 | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4822 if (type == GAIM_CONV_UPDATE_ACCOUNT) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4823 { |
4359 | 4824 gaim_conversation_autoset_title(conv); |
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4825 |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4826 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4827 gaim_gtkconv_update_buddy_icon(conv); |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4828 |
4359 | 4829 gaim_gtkconv_update_buttons_by_protocol(conv); |
4830 | |
4685 | 4831 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
4359 | 4832 |
4833 smiley_themeize(gtkconv->imhtml); | |
6394 | 4834 |
6395 | 4835 update_tab_icon(conv); |
4359 | 4836 } |
4837 else if (type == GAIM_CONV_UPDATE_TYPING || | |
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4838 type == GAIM_CONV_UPDATE_UNSEEN || |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4839 type == GAIM_CONV_UPDATE_TITLE) |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4840 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4841 const char *title; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4842 GaimConvIm *im = NULL; |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4843 char color[8]; |
4736 | 4844 |
4359 | 4845 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4846 im = GAIM_CONV_IM(conv); |
4359 | 4847 |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4848 title = gaim_conversation_get_title(conv); |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4849 |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4850 *color = '\0'; |
4359 | 4851 |
4852 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) | |
4853 gtk_widget_realize(gtkconv->tab_label); | |
4854 | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4855 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
|
4856 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4857 strcpy(color, "#47A046"); |
4359 | 4858 } |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4859 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
|
4860 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4861 strcpy(color, "#D1940C"); |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4862 } |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4863 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4864 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4865 strcpy(color, "#314E6C"); |
4359 | 4866 } |
8252 | 4867 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT) |
4868 { | |
4869 strcpy(color, "#DF421E"); | |
4870 } | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4871 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4872 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4873 strcpy(color, "#868272"); |
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 |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4876 if (*color != '\0') |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4877 { |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4878 char *label; |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4879 |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4880 label = g_strdup_printf("<span color=\"%s\">%s</span>", |
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4881 color, title); |
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4882 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label); |
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4883 g_free(label); |
4359 | 4884 } |
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4885 else |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4886 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
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 if (conv == gaim_conv_window_get_active_conversation(win)) |
4736 | 4889 update_typing_icon(conv); |
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4890 |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4891 if (type == GAIM_CONV_UPDATE_TITLE) { |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4892 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4893 if (conv == gaim_conv_window_get_active_conversation(win)) |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4894 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); |
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4895 } |
4359 | 4896 } |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4897 else if (type == GAIM_CONV_UPDATE_TOPIC) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4898 { |
7154 | 4899 const char *topic; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4900 chat = GAIM_CONV_CHAT(conv); |
4359 | 4901 gtkchat = gtkconv->u.chat; |
4902 | |
7154 | 4903 topic = gaim_conv_chat_get_topic(chat); |
4904 | |
4905 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),topic); | |
4906 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text, | |
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4907 topic, NULL); |
4359 | 4908 } |
4909 else if (type == GAIM_CONV_ACCOUNT_ONLINE || | |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4910 type == GAIM_CONV_ACCOUNT_OFFLINE) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4911 { |
7929 | 4912 gray_stuff_out(gaim_conv_window_get_active_conversation(win)); |
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
4913 generate_send_as_items(win, NULL); |
6440 | 4914 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
4915 update_tab_icon(conv); | |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4916 } |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4917 else if (type == GAIM_CONV_UPDATE_AWAY) |
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4918 { |
6440 | 4919 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
4920 update_tab_icon(conv); | |
4359 | 4921 } |
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4922 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
|
4923 type == GAIM_CONV_UPDATE_CHATLEFT) |
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4924 { |
7929 | 4925 gray_stuff_out(conv); |
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4926 } |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4927 else if (type == GAIM_CONV_UPDATE_ICON) |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4928 { |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4929 gaim_gtkconv_update_buddy_icon(conv); |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4930 } |
4359 | 4931 } |
4932 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4933 static GaimConversationUiOps conversation_ui_ops = |
4359 | 4934 { |
4935 gaim_gtkconv_destroy, /* destroy_conversation */ | |
4936 gaim_gtkconv_write_chat, /* write_chat */ | |
4937 gaim_gtkconv_write_im, /* write_im */ | |
4938 gaim_gtkconv_write_conv, /* write_conv */ | |
4939 gaim_gtkconv_chat_add_user, /* chat_add_user */ | |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4940 gaim_gtkconv_chat_add_users, /* chat_add_users */ |
4359 | 4941 gaim_gtkconv_chat_rename_user, /* chat_rename_user */ |
4942 gaim_gtkconv_chat_remove_user, /* chat_remove_user */ | |
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4943 gaim_gtkconv_chat_remove_users, /* chat_remove_users */ |
4359 | 4944 NULL, /* update_progress */ |
4945 gaim_gtkconv_updated /* updated */ | |
4946 }; | |
4947 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4948 GaimConversationUiOps * |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4949 gaim_gtk_conversations_get_conv_ui_ops(void) |
4359 | 4950 { |
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4951 return &conversation_ui_ops; |
4359 | 4952 } |
4953 | |
4954 /************************************************************************** | |
4955 * Public conversation utility functions | |
4956 **************************************************************************/ | |
4957 void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4958 gaim_gtkconv_update_buddy_icon(GaimConversation *conv) |
4359 | 4959 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4960 GaimGtkConversation *gtkconv; |
7143 | 4961 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); |
4359 | 4962 |
4963 char filename[256]; | |
4964 FILE *file; | |
4965 GError *err = NULL; | |
4966 | |
6695 | 4967 GaimBuddy *buddy; |
4757 | 4968 |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4969 const void *data; |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
4970 size_t len; |
4359 | 4971 |
4972 GdkPixbuf *buf; | |
4973 | |
4974 GtkWidget *event; | |
4975 GtkWidget *frame; | |
4976 GdkPixbuf *scale; | |
4977 GdkPixmap *pm; | |
4978 GdkBitmap *bm; | |
4979 int sf = 0; | |
4980 | |
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
4981 g_return_if_fail(conv != NULL); |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
4982 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); |
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
4983 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM); |
4359 | 4984 |
4985 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4986 | |
4987 remove_icon(gtkconv); | |
4988 | |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4989 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
4359 | 4990 return; |
4991 | |
4992 if (gaim_conversation_get_gc(conv) == NULL) | |
4993 return; | |
4994 | |
8189 | 4995 if (gtkconv->u.im->anim) |
4793 | 4996 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
8189 | 4997 else |
4998 gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons"); | |
4793 | 4999 |
4757 | 5000 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv), |
5001 gaim_conversation_get_name(conv))) != NULL) { | |
8374 | 5002 const char *iconfile; |
5003 if((iconfile = gaim_blist_node_get_string((GaimBlistNode*)buddy, "buddy_icon"))) { | |
5004 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); | |
5005 struct stat st; | |
5006 if ((icon == NULL) && (!stat(iconfile, &st))) { | |
5007 FILE *file = fopen(iconfile, "rb"); | |
5008 if (file) { | |
5009 char *data = g_malloc(st.st_size); | |
5010 fread(data, 1, st.st_size, file); | |
5011 fclose(file); | |
5012 gaim_buddy_icons_set_for_user(gaim_conversation_get_account(conv), gaim_conversation_get_name(conv), data, st.st_size); | |
5013 g_free(data); | |
5014 } | |
5015 return; | |
5016 } | |
5017 else | |
5018 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(iconfile, &err); | |
5019 } | |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5020 } |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5021 else |
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5022 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5023 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
|
5024 |
6877
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5025 if (icon == NULL) |
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5026 return; |
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5027 |
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5028 data = gaim_buddy_icon_get_data(icon, &len); |
4757 | 5029 |
5030 /* this is such an evil hack, i don't know why i'm even considering it. | |
5031 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */ | |
5032 g_snprintf(filename, sizeof(filename), | |
5033 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d", | |
5034 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid()); | |
5035 | |
5036 if (!(file = fopen(filename, "wb"))) | |
5037 return; | |
5038 | |
5039 fwrite(data, 1, len, file); | |
5040 fclose(file); | |
5041 | |
5042 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err); | |
5043 /* make sure we remove the file as soon as possible */ | |
5044 unlink(filename); | |
5045 } | |
4359 | 5046 |
5047 if (err) { | |
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5048 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv", |
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5049 "Buddy icon error: %s\n", err->message); |
4359 | 5050 g_error_free(err); |
5051 } | |
5052 | |
5053 if (!gtkconv->u.im->anim) | |
5054 return; | |
5055 | |
4793 | 5056 if(gtkconv->u.im->iter) |
5057 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
5058 | |
4359 | 5059 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) { |
5060 gtkconv->u.im->iter = NULL; | |
5061 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
5062 } else { | |
5063 gtkconv->u.im->iter = | |
5064 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); | |
5065 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
8189 | 5066 if (gtkconv->u.im->animate) |
5067 start_anim(NULL, conv); | |
4359 | 5068 } |
5069 | |
5070 sf = SCALE(gtkconv->u.im->anim); | |
5071 scale = gdk_pixbuf_scale_simple(buf, | |
5072 MAX(gdk_pixbuf_get_width(buf) * sf / | |
5073 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
5074 MAX(gdk_pixbuf_get_height(buf) * sf / | |
5075 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
5076 GDK_INTERP_NEAREST); | |
5077 | |
5078 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
4793 | 5079 g_object_unref(G_OBJECT(scale)); |
4359 | 5080 |
5081 frame = gtk_frame_new(NULL); | |
5082 gtk_frame_set_shadow_type(GTK_FRAME(frame), | |
5083 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN)); | |
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
5084 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 0); |
4359 | 5085 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0); |
5086 gtk_widget_show(frame); | |
5087 | |
5088 event = gtk_event_box_new(); | |
5089 gtk_container_add(GTK_CONTAINER(frame), event); | |
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5090 g_signal_connect(G_OBJECT(event), "button-press-event", |
4359 | 5091 G_CALLBACK(icon_menu), conv); |
5092 gtk_widget_show(event); | |
5093 | |
4635 | 5094 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm); |
4359 | 5095 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf); |
5096 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon); | |
5097 gtk_widget_show(gtkconv->u.im->icon); | |
5098 | |
4793 | 5099 g_object_unref(G_OBJECT(pm)); |
4359 | 5100 |
5101 if (bm) | |
4793 | 5102 g_object_unref(G_OBJECT(bm)); |
7143 | 5103 |
5104 /* The buddy icon code needs badly to be fixed. */ | |
5105 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
8068 | 5106 if(conv == gaim_conv_window_get_active_conversation(gaim_conversation_get_window(conv))) |
5107 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf); | |
4359 | 5108 } |
5109 | |
5110 void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5111 gaim_gtkconv_update_font_colors(GaimConversation *conv) |
4421 | 5112 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5113 GaimGtkConversation *gtkconv; |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5114 |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5115 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5116 return; |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5117 |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5118 gtkconv = GAIM_GTK_CONVERSATION(conv); |
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5119 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5120 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5121 >kconv->fg_color); |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5122 |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5123 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), |
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5124 >kconv->bg_color); |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5125 } |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5126 |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5127 void |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5128 gaim_gtkconv_update_font_face(GaimConversation *conv) |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5129 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5130 GaimGtkConversation *gtkconv; |
6141 | 5131 |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5132 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5133 return; |
6141 | 5134 |
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5135 gtkconv = GAIM_GTK_CONVERSATION(conv); |
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
5136 |
6141 | 5137 strncpy(gtkconv->fontface, |
5138 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"), | |
5139 sizeof(gtkconv->fontface)); | |
4421 | 5140 } |
5141 | |
5142 void | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5143 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv) |
4359 | 5144 { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5145 GaimConvWindow *win; |
4359 | 5146 |
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5147 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
4359 | 5148 return; |
5149 | |
7887 | 5150 win = gaim_conversation_get_window(conv); |
5151 | |
5152 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv) | |
5153 gray_stuff_out(conv); | |
4359 | 5154 } |
5155 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5156 GaimConvWindow * |
4359 | 5157 gaim_gtkwin_get_at_xy(int x, int y) |
5158 { | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5159 GaimConvWindow *win = NULL; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5160 GaimGtkWindow *gtkwin; |
4359 | 5161 GdkWindow *gdkwin; |
5162 GList *l; | |
5163 | |
5164 gdkwin = gdk_window_at_pointer(&x, &y); | |
5165 | |
5166 if (gdkwin) | |
5167 gdkwin = gdk_window_get_toplevel(gdkwin); | |
5168 | |
5169 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5170 win = (GaimConvWindow *)l->data; |
4359 | 5171 |
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5172 if (!GAIM_IS_GTK_WINDOW(win)) |
4359 | 5173 continue; |
5174 | |
5175 gtkwin = GAIM_GTK_WINDOW(win); | |
5176 | |
5177 if (gdkwin == gtkwin->window->window) | |
5178 return win; | |
5179 } | |
5180 | |
5181 return NULL; | |
5182 } | |
5183 | |
5184 int | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5185 gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y) |
4359 | 5186 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5187 GaimGtkWindow *gtkwin; |
4359 | 5188 GList *l; |
5189 gint nb_x, nb_y, x_rel, y_rel; | |
5190 GtkNotebook *notebook; | |
5191 GtkWidget *tab; | |
5192 gint i, page_num = 0; | |
5193 gboolean first_visible = TRUE; | |
5194 | |
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5195 if (!GAIM_IS_GTK_WINDOW(win)) |
4359 | 5196 return -1; |
5197 | |
5198 gtkwin = GAIM_GTK_WINDOW(win); | |
5199 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
5200 | |
5201 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
5202 x_rel = x - nb_x; | |
5203 y_rel = y - nb_y; | |
5204 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5205 for (l = gaim_conv_window_get_conversations(win), i = 0; |
4359 | 5206 l != NULL; |
5207 l = l->next, i++) { | |
5208 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5209 GaimConversation *conv = l->data; |
4359 | 5210 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
5211 | |
5212 if (!GTK_WIDGET_MAPPED(tab)) | |
5213 continue; | |
5214 | |
5215 if (first_visible) { | |
5216 first_visible = FALSE; | |
5217 | |
5218 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x; | |
5219 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y; | |
5220 } | |
5221 | |
5222 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
5223 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
5224 | |
5225 if (tab->allocation.x <= x_rel) { | |
5226 if (tab->allocation.x + tab->allocation.width <= x_rel) | |
5227 page_num = i + 1; | |
5228 else | |
5229 page_num = i; | |
5230 } | |
5231 else | |
5232 break; | |
5233 } | |
5234 else { | |
5235 if (tab->allocation.y <= y_rel) { | |
5236 if (tab->allocation.y + tab->allocation.height <= y_rel) | |
5237 page_num = i + 1; | |
5238 else | |
5239 page_num = i; | |
5240 } | |
5241 else | |
5242 break; | |
5243 } | |
5244 } | |
5245 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5246 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
4359 | 5247 return -1; |
5248 | |
5249 return page_num; | |
5250 } | |
5251 | |
5252 int | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5253 gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y) |
4359 | 5254 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5255 GaimGtkWindow *gtkwin; |
4359 | 5256 GList *l; |
5257 gint nb_x, nb_y, x_rel, y_rel; | |
5258 GtkNotebook *notebook; | |
5259 GtkWidget *tab; | |
5260 gint i, page_num = 0; | |
5261 | |
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5262 if (!GAIM_IS_GTK_WINDOW(win)) |
4359 | 5263 return -1; |
5264 | |
5265 gtkwin = GAIM_GTK_WINDOW(win); | |
5266 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
5267 | |
5268 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
5269 x_rel = x - nb_x; | |
5270 y_rel = y - nb_y; | |
5271 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5272 for (l = gaim_conv_window_get_conversations(win), i = 0; |
4359 | 5273 l != NULL; |
5274 l = l->next, i++) { | |
5275 | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5276 GaimConversation *conv = l->data; |
4359 | 5277 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
5278 | |
5279 if (!GTK_WIDGET_MAPPED(tab)) | |
5280 continue; | |
5281 | |
5282 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
5283 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
5284 | |
5285 if (tab->allocation.x <= x_rel) { | |
5286 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel) | |
5287 page_num = i + 1; | |
5288 else | |
5289 page_num = i; | |
5290 } | |
5291 else | |
5292 break; | |
5293 } | |
5294 else { | |
5295 if (tab->allocation.y <= y_rel) { | |
5296 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel) | |
5297 page_num = i + 1; | |
5298 else | |
5299 page_num = i; | |
5300 } | |
5301 else | |
5302 break; | |
5303 } | |
5304 } | |
5305 | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5306 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
4359 | 5307 return -1; |
5308 | |
5309 return page_num; | |
5310 } | |
4940
3708545afe42
[gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents:
4939
diff
changeset
|
5311 |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5312 static void |
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5313 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value, |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5314 gpointer data) |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5315 { |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5316 if (value) |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5317 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5318 GDK_Escape, 0, TRUE); |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5319 else |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5320 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5321 GDK_W, GDK_CONTROL_MASK, TRUE); |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5322 } |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5323 |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5324 static void |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5325 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
|
5326 gpointer data) |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5327 { |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5328 GList *l; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5329 GaimConversation *conv; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5330 GaimGtkConversation *gtkconv; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5331 |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5332 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5333 conv = (GaimConversation *)l->data; |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5334 |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5335 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5336 continue; |
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 gtkconv = GAIM_GTK_CONVERSATION(conv); |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5339 |
6440 | 5340 if (value) { |
5341 update_tab_icon(conv); | |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5342 gtk_widget_show(gtkconv->icon); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5343 gtk_widget_show(gtkconv->menu_icon); |
6440 | 5344 } |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5345 else { |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5346 gtk_widget_hide(gtkconv->icon); |
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5347 gtk_widget_hide(gtkconv->menu_icon); |
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5348 } |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5349 } |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5350 } |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5351 |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5352 static void |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5353 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
|
5354 gpointer data) |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5355 { |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5356 GList *l; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5357 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5358 GaimGtkConversation *gtkconv; |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5359 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5360 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5361 conv = (GaimConversation *)l->data; |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5362 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5363 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5364 continue; |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5365 |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5366 gtkconv = GAIM_GTK_CONVERSATION(conv); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5367 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5368 if (value) |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5369 gtk_widget_show(gtkconv->close); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5370 else |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5371 gtk_widget_hide(gtkconv->close); |
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 } |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5374 |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5375 static void |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5376 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value, |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5377 gpointer data) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5378 { |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5379 GList *l; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5380 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5381 GaimGtkConversation *gtkconv; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5382 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5383 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5384 conv = (GaimConversation *)l->data; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5385 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5386 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5387 continue; |
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 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5390 |
7386 | 5391 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
|
5392 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5393 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5394 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5395 static void |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5396 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value, |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5397 gpointer data) |
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 #ifdef USE_GTKSPELL |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5400 GList *cl; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5401 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5402 GaimGtkConversation *gtkconv; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5403 GtkSpell *spell; |
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 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5406 |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5407 conv = (GaimConversation *)cl->data; |
5674
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 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5410 continue; |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5411 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5412 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5413 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5414 if (value) |
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
5415 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5416 else { |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5417 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry)); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5418 gtkspell_detach(spell); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5419 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5420 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5421 #endif |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5422 } |
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 static void |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5425 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value, |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5426 gpointer data) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5427 { |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5428 GList *cl; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5429 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5430 GaimGtkConversation *gtkconv; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5431 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5432 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5433 conv = (GaimConversation *)cl->data; |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5434 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5435 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5436 continue; |
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 gtkconv = GAIM_GTK_CONVERSATION(conv); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5439 |
7386 | 5440 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
|
5441 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5442 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5443 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5444 static void |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5445 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value, |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5446 gpointer data) |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5447 { |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5448 GList *l; |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5449 GtkPositionType pos; |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5450 GaimConvWindow *win; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5451 GaimGtkWindow *gtkwin; |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5452 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5453 pos = GPOINTER_TO_INT(value); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5454 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5455 for (l = gaim_get_windows(); l != NULL; l = l->next) { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5456 win = (GaimConvWindow *)l->data; |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5457 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5458 if (!GAIM_IS_GTK_WINDOW(win)) |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5459 continue; |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5460 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5461 gtkwin = GAIM_GTK_WINDOW(win); |
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 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); |
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 } |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5466 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5467 static void |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5468 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type, |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5469 gpointer value, gpointer data) |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5470 { |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5471 GList *l; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5472 GaimConversation *conv; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5473 GaimGtkConversation *gtkconv; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5474 GaimConvWindow *win; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5475 GaimGtkWindow *gtkwin; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5476 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5477 for (l = gaim_get_conversations(); l != NULL; l = l->next) |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5478 { |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5479 conv = (GaimConversation *)l->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 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5482 continue; |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5483 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5484 gtkconv = GAIM_GTK_CONVERSATION(conv); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5485 win = gaim_conversation_get_window(conv); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5486 gtkwin = GAIM_GTK_WINDOW(win); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5487 |
7386 | 5488 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5489 gtk_check_menu_item_set_active( |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5490 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5491 gtkconv->show_formatting_toolbar); |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5492 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5493 if (gtkconv->show_formatting_toolbar) |
8317 | 5494 gtk_widget_show(gtkconv->toolbar); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5495 else |
8317 | 5496 gtk_widget_hide(gtkconv->toolbar); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5497 } |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5498 } |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5499 |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5500 static void |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5501 im_button_type_pref_cb(const char *name, GaimPrefType type, |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5502 gpointer value, gpointer data) |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5503 { |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5504 GList *l; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5505 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5506 GaimGtkConversation *gtkconv; |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5507 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5508 for (l = gaim_get_ims(); l != NULL; l = l->next) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5509 conv = (GaimConversation *)l->data; |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5510 gtkconv = GAIM_GTK_CONVERSATION(conv); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5511 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5512 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5513 } |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5514 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5515 |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5516 static void |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5517 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type, |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5518 gpointer value, gpointer data) |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5519 { |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5520 GList *l; |
8189 | 5521 GaimConversation *conv; |
5522 GaimGtkConversation *gtkconv; | |
5523 GaimConvWindow *win; | |
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 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
|
5526 return; |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5527 |
8189 | 5528 /* Set the "animate" flag for each icon based on the new preference */ |
5529 for (l = gaim_get_ims(); l != NULL; l = l->next) { | |
5530 conv = (GaimConversation *)l->data; | |
5531 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
5532 gtkconv->u.im->animate = (gboolean)value; | |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5533 } |
8189 | 5534 |
5535 /* Now either stop or start animation for the active conversation in each window */ | |
5536 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
5537 win = (GaimConvWindow *)l->data; | |
5538 conv = gaim_conv_window_get_active_conversation(win); | |
5539 gaim_gtkconv_update_buddy_icon(conv); | |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5540 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5541 } |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5542 |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5543 static void |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5544 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
|
5545 gpointer data) |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5546 { |
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5547 GList *l; |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5548 |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5549 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5550 GaimConversation *conv = l->data; |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5551 |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5552 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5553 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon); |
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5554 } |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5555 } |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5556 |
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5680
diff
changeset
|
5557 static void |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5558 chat_button_type_pref_cb(const char *name, GaimPrefType type, |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5559 gpointer value, gpointer data) |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5560 { |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5561 GList *l; |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5562 GaimConversation *conv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5563 GaimGtkConversation *gtkconv; |
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5564 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5565 for (l = gaim_get_chats(); l != NULL; l = l->next) { |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5566 conv = (GaimConversation *)l->data; |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5567 gtkconv = GAIM_GTK_CONVERSATION(conv); |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5568 |
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5569 setup_chat_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
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 } |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5572 |
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5573 static void |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5574 conv_placement_pref_cb(const char *name, GaimPrefType type, |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5575 gpointer value, gpointer data) |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5576 { |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5577 GaimConvPlacementFunc func; |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5578 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5579 if (strcmp(name, "/gaim/gtk/conversations/placement")) |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5580 return; |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5581 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5582 func = gaim_conv_placement_get_fnc(value); |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5583 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5584 if (func == NULL) |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5585 return; |
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 gaim_conv_placement_set_current_func(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 |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5590 void |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5591 gaim_gtk_conversations_init(void) |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5592 { |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5593 /* Conversations */ |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5594 gaim_prefs_add_none("/gaim/gtk/conversations"); |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5595 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
|
5596 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5597 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5598 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5599 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5600 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5601 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5602 gaim_prefs_add_bool("/gaim/gtk/conversations/send_strikethrough", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5603 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5604 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5605 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5606 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
|
5607 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5608 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5609 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5610 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5611 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5612 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5613 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5614 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5615 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5616 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE); |
5743
af159a5bbaa0
[gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
5617 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
|
5618 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
|
5619 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last"); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5620 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF"); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5621 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000"); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5622 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5623 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5624 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5625 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
|
5626 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5627 /* Conversations -> Chat */ |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5628 gaim_prefs_add_none("/gaim/gtk/conversations/chat"); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5629 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type", |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5630 GAIM_BUTTON_TEXT_IMAGE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5631 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5632 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
|
5633 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
|
5634 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5635 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5636 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5637 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5638 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5639 /* Conversations -> IM */ |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5640 gaim_prefs_add_none("/gaim/gtk/conversations/im"); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5641 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type", |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5642 GAIM_BUTTON_TEXT_IMAGE); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5643 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
|
5644 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
|
5645 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
|
5646 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
|
5647 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5648 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5649 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50); |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5650 |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5651 /* Connect callbacks. */ |
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5652 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes", |
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5653 escape_closes_pref_cb, NULL); |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5654 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs", |
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5655 icons_on_tabs_pref_cb, NULL); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5656 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs", |
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5657 close_on_tabs_pref_cb, NULL); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5658 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5659 show_smileys_pref_cb, NULL); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5660 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5661 show_timestamps_pref_cb, NULL); |
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5662 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar", |
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5663 show_formatting_toolbar_pref_cb, NULL); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5664 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5665 spellcheck_pref_cb, NULL); |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5666 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side", |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5667 tab_side_pref_cb, NULL); |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5668 |
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5669 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement", |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5670 conv_placement_pref_cb, NULL); |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5671 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement"); |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5672 |
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5673 |
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5674 |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5675 /* IM callbacks */ |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5676 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type", |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5677 im_button_type_pref_cb, NULL); |
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5678 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5679 animate_buddy_icons_pref_cb, NULL); |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5680 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons", |
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5681 show_buddy_icons_pref_cb, NULL); |
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5682 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5683 |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5684 /* Chat callbacks */ |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5685 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type", |
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5686 chat_button_type_pref_cb, NULL); |
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5687 } |