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