Mercurial > pidgin
annotate src/gtkconv.c @ 8944:f041cc8d86cf
[gaim-migrate @ 9716]
Fully replace Ignore colors, Ignore font faces and Ignore font sizes with
Ignore formatting on incoming messages.
nosnilmot: I chose not to apply your change to set_away_option because
people should not attempt to set a preference with a NULL value, and
if they do we might as well just have Gaim crash so they know about it.
My reasoning might be flawed. Eh.
Also, Chip and Etan were both against consolidating these options,
so someone might want to keep a patch of this commit handy so we can
revert it, if necessary.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Sun, 16 May 2004 05:25:37 +0000 |
| parents | 71fddf3f340d |
| children | 80944edf8d80 |
| 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> |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
38 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
39 #include "debug.h" |
| 6982 | 40 #include "imgstore.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
41 #include "log.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
42 #include "multi.h" |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
43 #include "notify.h" |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
44 #include "prefs.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
45 #include "prpl.h" |
| 6038 | 46 #include "request.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
47 #include "sound.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
48 #include "util.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
49 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
50 #include "dnd-hints.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
51 #include "gtkblist.h" |
| 5717 | 52 #include "gtkconv.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
53 #include "gtkimhtml.h" |
| 8317 | 54 #include "gtkimhtmltoolbar.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 */ |
| 8535 | 104 "#006400", /* DarkGreen */ |
| 105 "#8b4513", /* SaddleBrown */ | |
| 106 "#8b8989", /* snow4 */ | |
| 107 "#7d26cd", /* purple3 */ | |
| 4359 | 108 }; |
| 6291 | 109 |
| 4359 | 110 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors)) |
| 111 | |
| 112 #define SCALE(x) \ | |
| 113 ((gdk_pixbuf_animation_get_width(x) <= 48 && \ | |
| 114 gdk_pixbuf_animation_get_height(x) <= 48) ? 48 : 50) | |
| 115 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
116 typedef struct |
| 4359 | 117 { |
| 118 GtkWidget *window; | |
| 119 | |
| 120 GtkWidget *entry; | |
| 121 GtkWidget *message; | |
| 122 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
123 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
124 |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
125 } InviteBuddyInfo; |
| 4359 | 126 |
| 127 static GtkWidget *invite_dialog = NULL; | |
| 128 | |
| 129 /* Prototypes. <-- because Paco-Paco hates this comment. */ | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
130 static void got_typing_keypress(GaimConversation *conv, gboolean first); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
131 static GList *generate_invite_user_names(GaimConnection *gc); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
132 static void add_chat_buddy_common(GaimConversation *conv, |
| 4359 | 133 const char *name, int pos); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
134 static void tab_complete(GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
135 static void update_typing_icon(GaimConversation *conv); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
136 static gboolean update_send_as_selection(GaimConvWindow *win); |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
137 static char *item_factory_translate_func (const char *path, gpointer func_data); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
138 static void save_convo(GtkWidget *save, GaimConversation *c); |
| 4359 | 139 |
| 140 /************************************************************************** | |
| 141 * Callbacks | |
| 142 **************************************************************************/ | |
| 143 static void | |
| 6038 | 144 do_save_convo(GtkWidget *wid) |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
145 { |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
146 GaimConversation *conv; |
| 8557 | 147 const char *name; |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
148 const char *filename; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
149 FILE *fp; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
150 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
151 conv = g_object_get_data(G_OBJECT(GTK_FILE_SELECTION(wid)->ok_button), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
152 "gaim_conversation"); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
153 |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
154 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
155 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
156 if (!((gaim_conversation_get_type(conv) != GAIM_CONV_CHAT && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
157 g_list_find(gaim_get_ims(), conv)) || |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
158 (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
159 g_list_find(gaim_get_chats(), conv)))) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
160 filename = NULL; |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
161 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
162 gtk_widget_destroy(wid); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
163 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
164 if (filename == NULL) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
165 return; |
|
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 ((fp = fopen(filename, "w+")) == 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 |
| 8557 | 170 name = gaim_conversation_get_name(conv); |
| 171 | |
| 172 fprintf(fp, _("<h1>Conversation with %s</h1>\n"), name); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
173 fprintf(fp, "%s", conv->history->str); |
|
5934
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 { | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
181 const char *filename; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
182 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
183 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); |
| 6038 | 184 |
| 185 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid))) | |
| 186 return; | |
| 187 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
188 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
189 { |
| 6038 | 190 gaim_request_yes_no(NULL, NULL, _("That file already exists"), |
| 191 _("Would you like to overwrite it?"), 1, wid, | |
| 192 G_CALLBACK(do_save_convo), NULL); | |
| 193 } | |
| 194 else | |
| 195 do_save_convo(wid); | |
| 196 } | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
197 |
| 4359 | 198 |
| 199 static gint | |
| 200 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d) | |
| 201 { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
202 GaimConvWindow *win = (GaimConvWindow *)d; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
203 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
204 gaim_conv_window_destroy(win); |
|
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
205 |
|
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
206 return TRUE; |
| 4359 | 207 } |
| 208 | |
| 209 static gint | |
| 210 close_conv_cb(GtkWidget *w, gpointer d) | |
| 211 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
212 GaimConversation *conv = (GaimConversation *)d; |
| 4359 | 213 |
| 214 gaim_conversation_destroy(conv); | |
|
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
215 |
|
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
216 return TRUE; |
| 4359 | 217 } |
| 218 | |
| 8914 | 219 static gboolean |
| 220 size_allocate_cb(GtkWidget *w, GtkAllocation *allocation, GaimConversation *conv) | |
| 221 { | |
| 222 GaimGtkConversation *gtkconv; | |
| 223 | |
| 224 if (!GTK_WIDGET_VISIBLE(w)) | |
| 225 return FALSE; | |
| 226 | |
| 227 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 228 return FALSE; | |
| 229 | |
| 230 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 231 | |
| 232 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
| 233 { | |
| 234 if (w == gtkconv->sw) | |
| 235 { | |
| 236 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_width", allocation->width); | |
| 237 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_height", allocation->height); | |
| 238 } | |
| 239 if (w == gtkconv->entry) | |
| 240 gaim_prefs_set_int("/gaim/gtk/conversations/im/entry_height", allocation->height); | |
| 241 } | |
| 242 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) | |
| 243 { | |
| 244 if (w == gtkconv->sw) | |
| 245 { | |
| 246 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_width", allocation->width); | |
| 247 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_height", allocation->height); | |
| 248 } | |
| 249 if (w == gtkconv->entry) | |
| 250 gaim_prefs_set_int("/gaim/gtk/conversations/chat/entry_height", allocation->height); | |
| 251 } | |
| 252 | |
| 253 return FALSE; | |
| 254 } | |
| 255 | |
|
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
256 /* Courtesy of Galeon! */ |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
257 static void |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
258 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state) |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
259 { |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
260 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE) |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
261 gtk_widget_set_state(widget, GTK_STATE_NORMAL); |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
262 } |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
263 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
264 static void |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
265 default_formatize(GaimConversation *conv) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
266 { |
| 8061 | 267 GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv); |
| 268 GaimConnection *gc = gaim_conversation_get_gc(conv); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
269 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
270 if (gc && gc->flags & GAIM_CONNECTION_HTML) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
271 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
272 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) |
| 8061 | 273 gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry)); |
| 8481 | 274 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
275 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) |
| 8061 | 276 gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry)); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
277 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
278 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) |
| 8061 | 279 gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry)); |
| 8481 | 280 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
281 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") || |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
282 c->has_font) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
283 { |
| 8061 | 284 gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry), c->fontface); |
| 285 } | |
| 286 | |
|
8691
0eb5161ef333
[gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents:
8690
diff
changeset
|
287 if (!(gc->flags & GAIM_CONNECTION_NO_FONTSIZE) && |
|
0eb5161ef333
[gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents:
8690
diff
changeset
|
288 gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
289 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
290 gtk_imhtml_font_set_size(GTK_IMHTML(c->entry), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
291 gaim_prefs_get_int("/gaim/gtk/conversations/font_size")); |
| 8061 | 292 } |
| 293 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
294 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
295 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
296 char *color = g_strdup_printf("#%02x%02x%02x", |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
297 c->fg_color.red / 256, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
298 c->fg_color.green / 256, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
299 c->fg_color.blue / 256); |
| 8061 | 300 gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color); |
| 301 g_free(color); | |
| 302 } | |
| 303 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
304 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
305 gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
306 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
307 char *color = g_strdup_printf("#%02x%02x%02x", |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
308 c->bg_color.red / 256, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
309 c->bg_color.green / 256, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
310 c->bg_color.blue / 256); |
| 8061 | 311 gtk_imhtml_toggle_backcolor(GTK_IMHTML(c->entry), color); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
312 g_free(color); |
| 8061 | 313 } |
| 8677 | 314 |
| 315 if (gc->flags & GAIM_CONNECTION_FORMATTING_WBFO) | |
| 316 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(c->entry), TRUE); | |
| 317 else | |
| 318 gtk_imhtml_set_whole_buffer_formatting_only(GTK_IMHTML(c->entry), FALSE); | |
| 8061 | 319 } |
| 320 } | |
| 321 | |
| 4359 | 322 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
323 send_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 324 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
325 GaimGtkConversation *gtkconv; |
| 8655 | 326 GaimAccount *account; |
| 8677 | 327 GaimConnection *gc; |
| 8448 | 328 char *buf, *clean; |
| 4359 | 329 |
| 330 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 8655 | 331 account = gaim_conversation_get_account(conv); |
| 332 | |
| 333 if (!gaim_account_is_connected(account)) | |
| 334 return; | |
|
8329
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
335 |
| 8442 | 336 buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); |
| 8448 | 337 clean = gaim_markup_strip_html(buf); |
| 338 | |
| 4359 | 339 gtk_widget_grab_focus(gtkconv->entry); |
| 340 | |
| 8448 | 341 if (strlen(clean) == 0) { |
| 342 g_free(clean); | |
| 4359 | 343 return; |
| 344 } | |
| 345 | |
| 8677 | 346 gc = gaim_account_get_connection(account); |
| 347 if (gc && (gc->flags & GAIM_CONNECTION_NO_NEWLINES)) { | |
| 348 char **bufs; | |
| 349 int i; | |
| 350 | |
| 351 bufs = gtk_imhtml_get_markup_lines(GTK_IMHTML(gtkconv->entry)); | |
| 352 for (i = 0; bufs[i]; i++) { | |
| 353 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
| 354 gaim_conv_im_send(GAIM_CONV_IM(conv), bufs[i]); | |
| 355 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) | |
| 356 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), bufs[i]); | |
| 357 } | |
| 358 | |
| 359 g_strfreev(bufs); | |
| 360 | |
| 361 } else { | |
| 362 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
| 363 gaim_conv_im_send(GAIM_CONV_IM(conv), buf); | |
| 364 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) | |
| 365 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf); | |
| 366 } | |
| 4359 | 367 |
| 8677 | 368 g_free(clean); |
| 4359 | 369 g_free(buf); |
| 370 | |
| 8061 | 371 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
| 372 default_formatize(conv); | |
| 4359 | 373 } |
| 374 | |
| 375 static void | |
| 7928 | 376 add_remove_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 377 { |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
378 GaimAccount *account; |
| 4359 | 379 const char *name; |
| 380 | |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
381 account = gaim_conversation_get_account(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
382 name = gaim_conversation_get_name(conv); |
| 7879 | 383 |
| 384 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 7859 | 385 GaimBuddy *b; |
| 386 | |
| 387 b = gaim_find_buddy(account, name); | |
| 388 if (b != NULL) | |
| 389 show_confirm_del(b); | |
| 390 else if (account != NULL && gaim_account_is_connected(account)) | |
| 391 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL); | |
| 7879 | 392 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
| 7859 | 393 GaimChat *c; |
| 394 | |
| 395 c = gaim_blist_find_chat(account, name); | |
| 396 if (c != NULL) | |
| 397 show_confirm_del_blist_chat(c); | |
| 398 else if (account != NULL && gaim_account_is_connected(account)) | |
| 399 gaim_blist_request_add_chat(account, NULL, NULL); | |
| 400 } | |
| 4359 | 401 |
| 402 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 403 } | |
| 404 | |
| 7975 | 405 static void chat_do_info(GaimConversation *conv, const char *who) |
| 406 { | |
| 407 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 408 GaimConnection *gc; | |
| 409 | |
| 410 if ((gc = gaim_conversation_get_gc(conv))) { | |
| 411 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 412 | |
| 413 /* | |
| 414 * If there are special needs for getting info on users in | |
| 415 * buddy chat "rooms"... | |
| 416 */ | |
| 417 if (prpl_info->get_cb_info != NULL) | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
418 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
419 prpl_info->get_cb_info(gc, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
420 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
421 } |
| 7975 | 422 else |
| 423 prpl_info->get_info(gc, who); | |
| 424 } | |
| 425 } | |
| 426 | |
| 427 | |
| 4359 | 428 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
429 info_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 430 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
431 GaimGtkConversation *gtkconv; |
| 4359 | 432 |
| 433 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 434 | |
| 7879 | 435 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 436 serv_get_info(gaim_conversation_get_gc(conv), | |
| 437 gaim_conversation_get_name(conv)); | |
| 438 | |
| 439 gtk_widget_grab_focus(gtkconv->entry); | |
| 440 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 441 /* Get info of the person currently selected in the GtkTreeView */ | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
442 GaimGtkChatPane *gtkchat; |
| 4359 | 443 GtkTreeIter iter; |
| 444 GtkTreeModel *model; | |
| 445 GtkTreeSelection *sel; | |
| 446 const char *name; | |
| 447 | |
| 448 gtkchat = gtkconv->u.chat; | |
| 449 | |
| 450 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
| 451 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
| 452 | |
| 453 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
| 454 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1); | |
| 455 else | |
| 456 return; | |
| 457 | |
| 7975 | 458 chat_do_info(conv, name); |
| 4359 | 459 } |
| 460 } | |
| 461 | |
| 462 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
463 warn_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 464 { |
| 465 show_warn_dialog(gaim_conversation_get_gc(conv), | |
| 7879 | 466 gaim_conversation_get_name(conv)); |
| 4359 | 467 |
| 468 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 469 } | |
| 470 | |
| 471 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
472 block_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 473 { |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
474 GaimAccount *account; |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
475 |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
476 account = gaim_conversation_get_account(conv); |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
477 |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
478 if (account != NULL && gaim_account_is_connected(account)) |
|
6399
d726a36628e8
[gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents:
6398
diff
changeset
|
479 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv)); |
| 4359 | 480 |
| 481 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 482 } | |
| 483 | |
| 484 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
485 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info) |
| 4359 | 486 { |
| 487 const char *buddy, *message; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
488 GaimGtkConversation *gtkconv; |
| 4359 | 489 |
| 490 gtkconv = GAIM_GTK_CONVERSATION(info->conv); | |
| 491 | |
| 492 if (resp == GTK_RESPONSE_OK) { | |
| 493 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry)); | |
| 494 message = gtk_entry_get_text(GTK_ENTRY(info->message)); | |
| 495 | |
| 4793 | 496 if (!g_ascii_strcasecmp(buddy, "")) { |
| 4359 | 497 g_free(info); |
| 498 | |
| 499 return; | |
| 500 } | |
| 501 | |
| 502 serv_chat_invite(gaim_conversation_get_gc(info->conv), | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
503 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)), |
| 4359 | 504 message, buddy); |
| 505 } | |
| 506 | |
| 507 gtk_widget_destroy(invite_dialog); | |
| 508 invite_dialog = NULL; | |
| 509 | |
| 510 g_free(info); | |
| 511 } | |
| 512 | |
| 513 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
514 invite_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 515 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
516 InviteBuddyInfo *info = NULL; |
| 4359 | 517 |
| 518 if (invite_dialog == NULL) { | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
519 GaimConnection *gc; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
520 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
521 GaimGtkWindow *gtkwin; |
| 4359 | 522 GtkWidget *label; |
| 523 GtkWidget *vbox, *hbox; | |
| 524 GtkWidget *table; | |
| 525 GtkWidget *img; | |
| 526 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
527 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
528 GTK_ICON_SIZE_DIALOG); |
| 4359 | 529 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
530 info = g_new0(InviteBuddyInfo, 1); |
| 4359 | 531 info->conv = conv; |
| 532 | |
| 533 gc = gaim_conversation_get_gc(conv); | |
| 534 win = gaim_conversation_get_window(conv); | |
| 535 gtkwin = GAIM_GTK_WINDOW(win); | |
| 536 | |
| 537 /* Create the new dialog. */ | |
| 538 invite_dialog = gtk_dialog_new_with_buttons( | |
| 7859 | 539 _("Invite Buddy Into Chat Room"), |
| 7879 | 540 GTK_WINDOW(gtkwin->window), 0, |
| 541 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
| 4359 | 542 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); |
| 543 | |
| 544 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog), | |
| 545 GTK_RESPONSE_OK); | |
| 546 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6); | |
| 547 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE); | |
| 548 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE); | |
| 549 | |
| 550 /* Setup the outside spacing. */ | |
| 551 vbox = GTK_DIALOG(invite_dialog)->vbox; | |
| 552 | |
| 553 gtk_box_set_spacing(GTK_BOX(vbox), 12); | |
| 554 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); | |
| 555 | |
| 556 /* Setup the inner hbox and put the dialog's icon in it. */ | |
| 557 hbox = gtk_hbox_new(FALSE, 12); | |
| 558 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 559 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 560 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 561 | |
| 562 /* Setup the right vbox. */ | |
| 563 vbox = gtk_vbox_new(FALSE, 0); | |
| 564 gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 565 | |
| 566 /* Put our happy label in it. */ | |
| 567 label = gtk_label_new(_("Please enter the name of the user you wish " | |
| 568 "to invite, along with an optional invite " | |
| 569 "message.")); | |
| 570 gtk_widget_set_size_request(label, 350, -1); | |
| 571 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 572 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 573 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 574 | |
| 575 /* hbox for the table, and to give it some spacing on the left. */ | |
| 576 hbox = gtk_hbox_new(FALSE, 6); | |
| 577 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 578 | |
| 579 /* Setup the table we're going to use to lay stuff out. */ | |
| 580 table = gtk_table_new(2, 2, FALSE); | |
| 581 gtk_table_set_row_spacings(GTK_TABLE(table), 6); | |
| 582 gtk_table_set_col_spacings(GTK_TABLE(table), 6); | |
| 583 gtk_container_set_border_width(GTK_CONTAINER(table), 12); | |
| 584 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | |
| 585 | |
| 586 /* Now the Buddy label */ | |
| 587 label = gtk_label_new(NULL); | |
| 588 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:")); | |
| 589 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 590 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | |
| 591 | |
| 592 /* Now the Buddy drop-down entry field. */ | |
| 593 info->entry = gtk_combo_new(); | |
| 594 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE); | |
| 595 gtk_entry_set_activates_default( | |
| 596 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE); | |
| 597 | |
| 598 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1); | |
| 599 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry); | |
| 600 | |
| 601 /* Fill in the names. */ | |
| 602 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry), | |
| 603 generate_invite_user_names(gc)); | |
| 604 | |
| 605 | |
| 606 /* Now the label for "Message" */ | |
| 607 label = gtk_label_new(NULL); | |
| 608 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:")); | |
| 609 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 610 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); | |
| 611 | |
| 612 | |
| 613 /* And finally, the Message entry field. */ | |
| 614 info->message = gtk_entry_new(); | |
| 615 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE); | |
| 616 | |
| 617 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2); | |
| 618 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message); | |
| 619 | |
| 620 /* Connect the signals. */ | |
| 621 g_signal_connect(G_OBJECT(invite_dialog), "response", | |
| 622 G_CALLBACK(do_invite), info); | |
| 623 } | |
| 624 | |
| 625 gtk_widget_show_all(invite_dialog); | |
| 626 | |
| 627 if (info != NULL) | |
| 628 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry); | |
| 629 } | |
| 630 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
631 static void |
| 7748 | 632 menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget) |
| 633 { | |
| 634 show_im_dialog(); | |
| 635 } | |
| 636 | |
| 637 static void | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
638 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
639 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
640 GaimConvWindow *win = (GaimConvWindow *)data; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
641 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
642 save_convo(NULL, gaim_conv_window_get_active_conversation(win)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
643 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
644 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
645 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
646 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
647 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
648 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
649 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
650 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
651 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
652 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
653 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
654 gaim_conversation_get_account(conv)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
655 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
656 |
| 7295 | 657 struct _search { |
| 658 GaimGtkConversation *gtkconv; | |
| 659 GtkWidget *entry; | |
| 660 }; | |
| 661 | |
| 7929 | 662 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s) |
| 7295 | 663 { |
| 7929 | 664 switch (resp) { |
| 665 case GTK_RESPONSE_OK: | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
666 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
667 gtk_entry_get_text(GTK_ENTRY(s->entry))); |
| 7929 | 668 break; |
| 669 | |
| 670 case GTK_RESPONSE_DELETE_EVENT: | |
| 671 case GTK_RESPONSE_CLOSE: | |
| 672 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); | |
| 673 gtk_widget_destroy(s->gtkconv->dialogs.search); | |
| 674 s->gtkconv->dialogs.search = NULL; | |
| 675 g_free(s); | |
| 676 break; | |
| 677 } | |
| 7295 | 678 } |
| 679 | |
| 680 static void | |
| 7751 | 681 menu_find_cb(gpointer data, guint action, GtkWidget *widget) |
| 7295 | 682 { |
| 683 GaimConvWindow *win = (GaimConvWindow *)data; | |
| 684 GaimConversation *conv = gaim_conv_window_get_active_conversation(win); | |
| 685 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); | |
| 686 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7929 | 687 GtkWidget *hbox; |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
688 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
689 GTK_ICON_SIZE_DIALOG); |
| 7929 | 690 GtkWidget *label; |
| 7295 | 691 struct _search *s; |
| 692 | |
| 7798 | 693 if (gtkconv->dialogs.search) { |
| 694 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search)); | |
| 7295 | 695 return; |
| 7798 | 696 } |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
697 |
| 7295 | 698 s = g_malloc(sizeof(struct _search)); |
| 699 s->gtkconv = gtkconv; | |
| 7929 | 700 |
| 701 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"), | |
| 702 GTK_WINDOW(gtkwin->window), GTK_DIALOG_DESTROY_WITH_PARENT, | |
| 703 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | |
| 704 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
705 gtk_dialog_set_default_response(GTK_DIALOG(gtkconv->dialogs.search), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
706 GTK_RESPONSE_OK); |
| 7929 | 707 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", |
| 708 G_CALLBACK(do_search_cb), s); | |
| 709 | |
| 710 gtk_container_set_border_width(GTK_CONTAINER(gtkconv->dialogs.search), 6); | |
| 711 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); | |
| 712 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE); | |
| 713 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
714 gtk_container_set_border_width( |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
715 GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6); |
| 7929 | 716 |
| 717 hbox = gtk_hbox_new(FALSE, 12); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
718 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
719 hbox); |
| 7929 | 720 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
| 721 | |
| 722 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
723 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
724 GTK_RESPONSE_OK, FALSE); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
725 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
726 label = gtk_label_new(NULL); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
727 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); |
| 7929 | 728 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 729 | |
| 730 s->entry = gtk_entry_new(); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
731 gtk_entry_set_activates_default(GTK_ENTRY(s->entry), TRUE); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
732 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(s->entry)); |
| 7929 | 733 g_signal_connect(G_OBJECT(s->entry), "changed", |
| 734 G_CALLBACK(gaim_gtk_set_sensitive_if_input), | |
| 735 gtkconv->dialogs.search); | |
| 736 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
|
737 |
| 7295 | 738 gtk_widget_show_all(gtkconv->dialogs.search); |
| 7929 | 739 gtk_widget_grab_focus(s->entry); |
| 7295 | 740 } |
| 741 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
742 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
743 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
744 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
745 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
746 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
747 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
748 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
749 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
750 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
751 gaim_conversation_get_name(conv), NULL); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
752 } |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
753 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
754 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
755 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
756 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
757 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
758 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
759 GaimGtkConversation *gtkconv; |
| 8756 | 760 GtkIMHtmlToolbar *toolbar; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
761 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
762 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
763 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 8756 | 764 toolbar = GTK_IMHTMLTOOLBAR(gtkconv->toolbar); |
| 765 | |
| 766 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->link), | |
| 767 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->link))); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
768 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
769 |
| 8756 | 770 #if 0 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
771 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
772 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
773 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
774 GaimConvWindow *win = (GaimConvWindow *)data; |
| 8756 | 775 GaimConversation *conv; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
776 GaimGtkConversation *gtkconv; |
| 8756 | 777 GtkIMHtmlToolbar *toolbar; |
| 778 | |
| 779 conv = gaim_conv_window_get_active_conversation(win); | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
780 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win)); |
| 8756 | 781 toolbar = GTK_IMHTMLTOOLBAR(gtkconv->toolbar); |
| 782 | |
| 783 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), | |
| 784 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->image))); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
785 } |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
786 #endif |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
787 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
788 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
789 menu_alias_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
790 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
791 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
792 GaimConversation *conv; |
| 7879 | 793 GaimAccount *account; |
| 794 const char *name; | |
| 795 | |
| 796 conv = gaim_conv_window_get_active_conversation(win); | |
| 797 account = gaim_conversation_get_account(conv); | |
| 798 name = gaim_conversation_get_name(conv); | |
| 799 | |
| 800 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 801 GaimBuddy *b; | |
| 802 | |
| 803 b = gaim_find_buddy(account, name); | |
| 804 if (b != NULL) | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
805 alias_dialog_bud(b); |
| 7879 | 806 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
| 807 GaimChat *c; | |
| 808 | |
| 809 c = gaim_blist_find_chat(account, name); | |
| 810 if (c != NULL) | |
| 811 alias_dialog_blist_chat(c); | |
|
5908
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 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
814 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
815 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
816 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
817 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
818 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
819 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
820 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
821 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
822 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
823 info_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
824 } |
|
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 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
827 menu_invite_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
828 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
829 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
830 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
831 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
832 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
833 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
834 invite_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
835 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
836 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
837 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
838 menu_warn_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
839 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
840 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
841 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
842 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
843 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
844 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
845 warn_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
846 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
847 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
848 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
849 menu_block_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
850 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
851 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
852 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
853 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
854 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
855 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
856 block_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
857 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
858 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
859 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
860 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
861 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
862 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
863 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
864 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
865 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
866 |
| 7928 | 867 add_remove_cb(NULL, conv); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
868 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
869 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
870 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
871 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
872 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
873 GaimConvWindow *win = (GaimConvWindow *)data; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
874 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
875 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
|
876 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
877 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
878 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
879 menu_logging_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
880 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
881 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
882 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
883 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
884 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
885 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
886 if (conv == NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
887 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
888 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
889 gaim_conversation_set_logging(conv, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
890 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
891 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
892 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
893 static void |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
894 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
895 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
896 GaimConvWindow *win = (GaimConvWindow *)data; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
897 GaimConversation *conv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
898 GaimGtkConversation *gtkconv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
899 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
900 conv = gaim_conv_window_get_active_conversation(win); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
901 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
902 if (conv == NULL) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
903 return; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
904 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
905 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
906 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
907 gtkconv->show_formatting_toolbar = |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
908 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
909 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
910 if (gtkconv->show_formatting_toolbar) |
| 8317 | 911 gtk_widget_show(gtkconv->toolbar); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
912 else |
| 8317 | 913 gtk_widget_hide(gtkconv->toolbar); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
914 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
915 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
916 static void |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
917 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
918 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
919 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
920 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
921 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
922 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
923 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
924 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
925 if (!conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
926 return; |
|
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 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
929 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
930 gtkconv->make_sound = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
931 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
932 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
933 |
| 7961 | 934 static void |
| 935 chat_do_im(GaimConversation *conv, const char *who) | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
936 { |
| 7961 | 937 GaimPluginProtocolInfo *prpl_info = NULL; |
| 938 char *real_who; | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
939 GaimConversation *conv2; |
| 7961 | 940 GaimAccount *account; |
| 941 | |
| 942 account = gaim_conversation_get_account(conv); | |
| 943 | |
| 944 if(account && account->gc) | |
| 945 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl); | |
| 946 | |
| 947 if(prpl_info && prpl_info->get_cb_real_name) | |
| 948 real_who = prpl_info->get_cb_real_name(account->gc, | |
| 949 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); | |
| 950 else | |
| 951 real_who = g_strdup(who); | |
| 952 | |
| 953 if(!real_who) | |
| 954 return; | |
| 955 | |
| 956 conv2 = gaim_find_conversation_with_account(real_who, account); | |
| 957 | |
| 958 if (conv2 != NULL) | |
| 959 gaim_conv_window_show(gaim_conversation_get_window(conv2)); | |
| 960 else | |
| 961 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who); | |
| 962 | |
| 963 g_free(real_who); | |
| 964 } | |
| 965 | |
| 966 | |
| 967 static void | |
| 968 chat_im_button_cb(GtkWidget *widget, GaimConversation *conv) | |
| 969 { | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
970 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
971 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
972 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
973 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
974 GtkTreeSelection *sel; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
975 const char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
976 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
977 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
978 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
979 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
980 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
981 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
982 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
983 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
984 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
|
985 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
986 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
987 |
| 7961 | 988 chat_do_im(conv, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
989 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
990 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
991 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
992 ignore_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
993 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
994 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
995 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
996 GaimConvChat *chat; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
997 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
998 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
999 GtkTreeSelection *sel; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1000 const char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1001 int pos; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1002 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1003 chat = GAIM_CONV_CHAT(conv); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1004 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1005 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1006 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1007 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1008 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1009 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1010 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1011 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
|
1012 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1013 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1014 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1015 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1016 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1017 pos = g_list_index(gaim_conv_chat_get_users(chat), name); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1018 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1019 if (gaim_conv_chat_is_user_ignored(chat, name)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1020 gaim_conv_chat_unignore(chat, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1021 else |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1022 gaim_conv_chat_ignore(chat, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1023 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1024 add_chat_buddy_common(conv, name, pos); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1025 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1026 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1027 static void |
| 7398 | 1028 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv) |
| 1029 { | |
| 1030 const char *who = g_object_get_data(G_OBJECT(w), "user_data"); | |
| 1031 | |
| 1032 chat_do_im(conv, who); | |
|
5908
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 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1035 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1036 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1037 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1038 char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1039 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1040 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1041 |
| 7975 | 1042 chat_do_info(conv, who); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1043 } |
|
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 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1046 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1047 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1048 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1049 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1050 char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1051 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1052 gc = gaim_conversation_get_gc(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1053 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1054 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1055 if (gc != NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1056 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
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 /* |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1059 * 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
|
1060 */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1061 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1062 if (prpl_info->get_cb_away != NULL) |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1063 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1064 prpl_info->get_cb_away(gc, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1065 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1066 } |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1067 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1068 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1069 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1070 static void |
| 7928 | 1071 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv) |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1072 { |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1073 GaimAccount *account; |
| 6695 | 1074 GaimBuddy *b; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1075 char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1076 |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1077 account = gaim_conversation_get_account(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1078 name = g_object_get_data(G_OBJECT(w), "user_data"); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1079 b = gaim_find_buddy(account, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1080 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1081 if (b != NULL) |
| 5975 | 1082 show_confirm_del(b); |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1083 else if (account != NULL && gaim_account_is_connected(account)) |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1084 gaim_blist_request_add_buddy(account, name, NULL, NULL); |
|
5908
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 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1087 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1088 |
| 8143 | 1089 static GtkWidget * |
| 1090 create_chat_menu(GaimConversation *conv, gchar *who, | |
| 1091 GaimPluginProtocolInfo *prpl_info, GaimConnection *gc) | |
| 1092 { | |
| 1093 static GtkWidget *menu = NULL; | |
| 1094 GtkWidget *button; | |
| 1095 | |
| 1096 /* | |
| 1097 * If a menu already exists, destroy it before creating a new one, | |
| 1098 * thus freeing-up the memory it occupied. | |
| 1099 */ | |
| 1100 if (menu) | |
| 1101 gtk_widget_destroy(menu); | |
| 1102 | |
| 1103 menu = gtk_menu_new(); | |
| 1104 | |
| 1105 button = gtk_menu_item_new_with_label(_("IM")); | |
| 1106 g_signal_connect(G_OBJECT(button), "activate", | |
| 1107 G_CALLBACK(menu_chat_im_cb), conv); | |
| 1108 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1109 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1110 gtk_widget_show(button); | |
| 1111 | |
| 1112 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who)) | |
| 1113 button = gtk_menu_item_new_with_label(_("Un-Ignore")); | |
| 1114 else | |
| 1115 button = gtk_menu_item_new_with_label(_("Ignore")); | |
| 1116 | |
| 1117 g_signal_connect(G_OBJECT(button), "activate", | |
| 1118 G_CALLBACK(ignore_cb), conv); | |
| 1119 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1120 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1121 gtk_widget_show(button); | |
| 1122 | |
| 8170 | 1123 if (gc && (prpl_info->get_info || prpl_info->get_cb_info)) { |
| 8143 | 1124 button = gtk_menu_item_new_with_label(_("Info")); |
| 1125 g_signal_connect(G_OBJECT(button), "activate", | |
| 1126 G_CALLBACK(menu_chat_info_cb), conv); | |
| 1127 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1128 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1129 gtk_widget_show(button); | |
| 1130 } | |
| 1131 | |
| 1132 if (gc && prpl_info->get_cb_away) { | |
| 1133 button = gtk_menu_item_new_with_label(_("Get Away Msg")); | |
| 1134 g_signal_connect(G_OBJECT(button), "activate", | |
| 1135 G_CALLBACK(menu_chat_get_away_cb), conv); | |
| 1136 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1137 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1138 gtk_widget_show(button); | |
| 1139 } | |
| 1140 | |
| 8170 | 1141 /* XXX: jabber can only add buddies from here in certain circumstances */ |
| 8143 | 1142 /* Added by Jonas <jonas@birme.se> */ |
| 1143 if (gc) { | |
| 1144 if (gaim_find_buddy(gc->account, who)) | |
| 1145 button = gtk_menu_item_new_with_label(_("Remove")); | |
| 1146 else | |
| 1147 button = gtk_menu_item_new_with_label(_("Add")); | |
| 1148 | |
| 1149 g_signal_connect(G_OBJECT(button), "activate", | |
| 1150 G_CALLBACK(menu_chat_add_remove_cb), conv); | |
| 1151 | |
| 1152 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1153 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1154 gtk_widget_show(button); | |
| 1155 } | |
| 1156 /* End Jonas */ | |
| 1157 | |
| 1158 return menu; | |
| 1159 } | |
| 1160 | |
| 1161 | |
| 1162 static gint | |
| 1163 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimConversation *conv) | |
| 1164 { | |
| 1165 GaimGtkConversation *gtkconv; | |
| 1166 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 1167 GaimGtkChatPane *gtkchat; | |
| 1168 GaimConnection *gc; | |
| 1169 GaimAccount *account; | |
| 1170 GtkTreeSelection *sel; | |
| 1171 GtkTreeIter iter; | |
| 1172 GtkTreeModel *model; | |
| 1173 GtkWidget *menu; | |
| 1174 gchar *who; | |
| 1175 | |
| 1176 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 1177 gtkchat = gtkconv->u.chat; | |
| 1178 account = gaim_conversation_get_account(conv); | |
| 1179 gc = account->gc; | |
| 1180 | |
| 1181 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
| 1182 | |
| 1183 if (gc != NULL) | |
| 1184 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 1185 | |
| 1186 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
| 1187 if(!gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
| 1188 return FALSE; | |
| 1189 | |
| 1190 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1); | |
| 1191 menu = create_chat_menu (conv, who, prpl_info, gc); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1192 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1193 gaim_gtk_treeview_popup_menu_position_func, widget, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1194 0, GDK_CURRENT_TIME); |
| 8143 | 1195 |
| 1196 return TRUE; | |
| 1197 } | |
| 1198 | |
| 1199 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1200 static gint |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1201 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1202 GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1203 { |
| 8143 | 1204 GaimGtkConversation *gtkconv; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1205 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1206 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1207 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1208 GaimAccount *account; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1209 GtkTreePath *path; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1210 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1211 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1212 GtkTreeViewColumn *column; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1213 gchar *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1214 int x, y; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1215 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1216 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1217 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1218 account = gaim_conversation_get_account(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1219 gc = account->gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1220 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1221 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1222 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1223 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
|
1224 event->x, event->y, &path, &column, &x, &y); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1225 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1226 if (path == NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1227 return FALSE; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1228 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1229 if (gc != NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1230 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1231 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1232 gtk_tree_selection_select_path(GTK_TREE_SELECTION( |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1233 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1234 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1235 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1236 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
|
1237 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1238 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { |
| 7398 | 1239 chat_do_im(conv, who); |
| 1240 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
| 8143 | 1241 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1242 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1243 event->button, event->time); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1244 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1245 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1246 return TRUE; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1247 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1248 |
| 8133 | 1249 static void |
| 1250 move_to_next_unread_tab(GaimConversation *conv) | |
| 1251 { | |
| 1252 GaimConversation *next_conv = NULL; | |
| 1253 GaimConvWindow *win; | |
| 1254 GList *l; | |
| 1255 int index, i; | |
| 1256 | |
| 1257 win = gaim_conversation_get_window(conv); | |
| 1258 index = gaim_conversation_get_index(conv); | |
| 1259 | |
| 1260 /* First check the tabs after this position. */ | |
| 1261 for (l = g_list_nth(gaim_conv_window_get_conversations(win), index); | |
| 1262 l != NULL; | |
| 1263 l = l->next) { | |
| 1264 | |
| 1265 next_conv = (GaimConversation *)l->data; | |
| 1266 | |
| 1267 if (gaim_conversation_get_unseen(next_conv) > 0) | |
| 1268 break; | |
| 1269 | |
| 1270 next_conv = NULL; | |
| 1271 } | |
| 1272 | |
| 1273 if (next_conv == NULL) { | |
| 1274 | |
| 1275 /* Now check before this position. */ | |
| 1276 for (l = gaim_conv_window_get_conversations(win), i = 0; | |
| 1277 l != NULL && i < index; | |
| 1278 l = l->next) { | |
| 1279 | |
| 1280 next_conv = (GaimConversation *)l->data; | |
| 1281 | |
| 1282 if (gaim_conversation_get_unseen(next_conv) > 0) | |
| 1283 break; | |
| 1284 | |
| 1285 next_conv = NULL; | |
| 1286 } | |
| 1287 | |
| 1288 if (next_conv == NULL) { | |
| 1289 /* Okay, just grab the next conversation tab. */ | |
| 1290 if (index == gaim_conv_window_get_conversation_count(win) - 1) | |
| 1291 next_conv = gaim_conv_window_get_conversation_at(win, 0); | |
| 1292 else | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1293 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1294 next_conv = gaim_conv_window_get_conversation_at(win, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1295 index + 1); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1296 } |
| 8133 | 1297 } |
| 1298 } | |
| 1299 | |
| 1300 if (next_conv != NULL && next_conv != conv) { | |
| 1301 gaim_conv_window_switch_conversation(win, | |
| 1302 gaim_conversation_get_index(next_conv)); | |
| 1303 } | |
| 1304 } | |
| 1305 | |
| 4359 | 1306 static gboolean |
| 8105 | 1307 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data) |
| 4359 | 1308 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1309 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1310 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1311 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1312 GaimGtkWindow *gtkwin; |
| 8105 | 1313 int numconvs; |
| 1314 int curconv; | |
| 1315 | |
| 1316 conv = (GaimConversation *)data; | |
| 1317 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 1318 win = gaim_conversation_get_window(conv); | |
| 1319 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1320 numconvs = gaim_conv_window_get_conversation_count(win); | |
| 1321 curconv = gaim_conversation_get_index(conv); | |
| 1322 | |
| 1323 /* If CTRL was held down... */ | |
| 1324 if (event->state & GDK_CONTROL_MASK) { | |
| 4359 | 1325 switch (event->keyval) { |
| 8105 | 1326 case GDK_Return: |
| 1327 case GDK_KP_Enter: | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1328 if (gaim_prefs_get_bool( |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1329 "/gaim/gtk/conversations/ctrl_enter_sends")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1330 { |
| 8105 | 1331 send_cb(NULL, conv); |
| 1332 | |
| 1333 return TRUE; | |
| 1334 } | |
| 1335 break; | |
| 1336 | |
| 4359 | 1337 case GDK_Up: |
| 1338 if (!conv->send_history) | |
| 1339 break; | |
| 1340 | |
| 1341 if (!conv->send_history->prev) { | |
| 1342 GtkTextIter start, end; | |
| 1343 | |
| 1344 if (conv->send_history->data) | |
| 1345 g_free(conv->send_history->data); | |
| 1346 | |
| 1347 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
| 1348 &start); | |
| 1349 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end); | |
| 1350 | |
| 1351 conv->send_history->data = | |
| 8506 | 1352 gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 1353 } |
| 8677 | 1354 |
| 4359 | 1355 if (conv->send_history->next && |
| 1356 conv->send_history->next->data) { | |
| 8677 | 1357 GtkTextIter iter; |
| 1358 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
| 4359 | 1359 |
| 1360 conv->send_history = conv->send_history->next; | |
| 8061 | 1361 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1362 gtk_imhtml_append_text_with_images( |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1363 GTK_IMHTML(gtkconv->entry), conv->send_history->data, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1364 0, NULL); |
| 8677 | 1365 /* this is mainly just a hack so the formatting at the |
| 1366 * cursor gets picked up. */ | |
| 1367 gtk_text_buffer_get_end_iter(buffer, &iter); | |
| 1368 gtk_text_buffer_move_mark_by_name(buffer, "insert", &iter); | |
| 4359 | 1369 } |
| 1370 | |
| 8105 | 1371 return TRUE; |
| 4359 | 1372 break; |
| 1373 | |
| 1374 case GDK_Down: | |
| 1375 if (!conv->send_history) | |
| 1376 break; | |
| 1377 | |
| 8105 | 1378 if (conv->send_history->prev && |
| 1379 conv->send_history->prev->data) { | |
| 8677 | 1380 GtkTextIter iter; |
| 1381 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
| 8105 | 1382 |
| 4359 | 1383 conv->send_history = conv->send_history->prev; |
| 8105 | 1384 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1385 gtk_imhtml_append_text_with_images( |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1386 GTK_IMHTML(gtkconv->entry), conv->send_history->data, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1387 0, NULL); |
| 8677 | 1388 /* this is mainly just a hack so the formatting at the |
| 1389 * cursor gets picked up. */ | |
| 1390 gtk_text_buffer_get_end_iter(buffer, &iter); | |
| 1391 gtk_text_buffer_move_mark_by_name(buffer, "insert", &iter); | |
| 4359 | 1392 } |
| 1393 | |
| 8105 | 1394 return TRUE; |
| 4359 | 1395 break; |
| 8105 | 1396 |
| 8108 | 1397 case GDK_Page_Down: |
| 8143 | 1398 case ']': |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1399 gaim_conv_window_switch_conversation(win, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1400 (curconv + 1) % numconvs); |
| 8105 | 1401 |
| 1402 return TRUE; | |
| 1403 break; | |
| 1404 | |
| 8108 | 1405 case GDK_Page_Up: |
| 8143 | 1406 case '[': |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1407 gaim_conv_window_switch_conversation(win, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1408 (curconv + numconvs - 1) % numconvs); |
| 8133 | 1409 |
| 1410 return TRUE; | |
| 1411 break; | |
| 1412 | |
| 8108 | 1413 case GDK_Tab: |
| 8133 | 1414 move_to_next_unread_tab(conv); |
| 8108 | 1415 |
| 1416 return TRUE; | |
| 1417 break; | |
| 1418 | |
| 1419 case 'l': | |
| 1420 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); | |
| 1421 g_string_free(conv->history, TRUE); | |
| 8912 | 1422 conv->history = g_string_new(""); |
| 8108 | 1423 |
| 1424 return TRUE; | |
| 1425 break; | |
| 1426 | |
| 1427 case 'z': | |
| 1428 gtk_window_iconify(GTK_WINDOW(gtkwin->window)); | |
| 8105 | 1429 |
| 1430 return TRUE; | |
| 1431 break; | |
| 1432 | |
| 1433 } /* End of switch */ | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1434 } |
| 8758 | 1435 |
| 8105 | 1436 /* If ALT (or whatever) was held down... */ |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1437 else if (event->state & GDK_MOD1_MASK) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1438 { |
|
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8730
diff
changeset
|
1439 /* XXX - Make sure the conv exists before switching to it */ |
| 8105 | 1440 if (event->keyval > '0' && event->keyval <= '9') { |
| 1441 int switchto = event->keyval - '1'; | |
| 1442 if (switchto < numconvs) | |
| 1443 gaim_conv_window_switch_conversation(win, switchto); | |
| 4359 | 1444 |
| 1445 return TRUE; | |
| 1446 } | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1447 } |
| 8758 | 1448 |
| 8105 | 1449 /* If neither CTRL nor ALT were held down... */ |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1450 else |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1451 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1452 switch (event->keyval) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1453 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1454 case GDK_Return: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1455 case GDK_KP_Enter: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1456 if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1457 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1458 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1459 send_cb(NULL, conv); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1460 return TRUE; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1461 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1462 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1463 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1464 case GDK_Tab: |
| 8941 | 1465 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1466 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1467 tab_complete(conv); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1468 return TRUE; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1469 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1470 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1471 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1472 case GDK_Page_Up: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1473 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml)); |
| 8105 | 1474 return TRUE; |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1475 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1476 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1477 case GDK_Page_Down: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1478 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml)); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1479 return TRUE; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1480 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1481 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1482 case GDK_F2: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1483 gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps", |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1484 !gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1485 return TRUE; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1486 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1487 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1488 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1489 } |
| 4359 | 1490 |
| 1491 return FALSE; | |
| 1492 } | |
| 1493 | |
| 1494 /* | |
| 1495 * NOTE: | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1496 * 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
|
1497 * further. I have no idea *why* we need this, but we do ... It |
| 4359 | 1498 * 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
|
1499 * going all the way down to the notebook. I suspect a bug in |
| 4359 | 1500 * GtkTextView, but I'm not ready to point any fingers yet. |
| 1501 */ | |
| 1502 static gboolean | |
| 1503 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) | |
| 1504 { | |
| 1505 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
| 1506 /* Right single click */ | |
| 1507 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event"); | |
| 1508 | |
| 1509 return TRUE; | |
| 1510 } | |
| 1511 | |
| 1512 return FALSE; | |
| 1513 } | |
| 1514 | |
| 8173 | 1515 /* |
| 1516 * If someone tries to type into the conversation backlog of a | |
| 1517 * conversation window then we yank focus from the conversation backlog | |
| 1518 * and give it to the text entry box so that people can type | |
| 1519 * all the live long day and it will get entered into the entry box. | |
| 1520 */ | |
| 6057 | 1521 static gboolean |
| 8105 | 1522 refocus_entry_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) |
| 6057 | 1523 { |
| 1524 GaimGtkConversation *gtkconv = data; | |
| 1525 | |
| 8237 | 1526 /* If we have a valid key for the conversation display, then exit */ |
| 8224 | 1527 if ((event->state & GDK_CONTROL_MASK) || |
| 8237 | 1528 (event->keyval == GDK_F10) || |
| 1529 (event->keyval == GDK_Shift_L) || | |
| 1530 (event->keyval == GDK_Shift_R) || | |
| 1531 (event->keyval == GDK_Escape) || | |
| 8177 | 1532 (event->keyval == GDK_Up) || |
| 1533 (event->keyval == GDK_Down) || | |
| 1534 (event->keyval == GDK_Left) || | |
| 8191 | 1535 (event->keyval == GDK_Right) || |
| 1536 (event->keyval == GDK_Home) || | |
| 1537 (event->keyval == GDK_End)) | |
| 8177 | 1538 return FALSE; |
| 1539 | |
| 1540 if (event->type == GDK_KEY_RELEASE) | |
| 1541 gtk_widget_grab_focus(gtkconv->entry); | |
| 1542 | |
| 1543 gtk_widget_event(gtkconv->entry, (GdkEvent *)event); | |
| 1544 | |
| 1545 return TRUE; | |
| 6057 | 1546 } |
| 1547 | |
| 4359 | 1548 static void |
| 4673 | 1549 menu_conv_sel_send_cb(GObject *m, gpointer data) |
| 4359 | 1550 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1551 GaimConvWindow *win = g_object_get_data(m, "user_data"); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
1552 GaimAccount *account = g_object_get_data(m, "gaim_account"); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1553 GaimConversation *conv; |
| 8456 | 1554 GaimGtkConversation *gtkconv; |
| 1555 GaimPlugin *protocol; | |
| 4359 | 1556 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1557 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 1558 |
| 4491 | 1559 gaim_conversation_set_account(conv, account); |
| 8456 | 1560 |
| 1561 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 1562 protocol = gaim_find_prpl(conv->account->protocol_id); | |
| 1563 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), | |
| 1564 protocol->info->name); | |
| 4359 | 1565 } |
| 1566 | |
| 1567 static void | |
| 1568 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position, | |
| 1569 gchar *new_text, gint new_text_length, gpointer user_data) | |
| 1570 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1571 GaimConversation *conv = (GaimConversation *)user_data; |
| 4359 | 1572 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1573 g_return_if_fail(conv != NULL); |
| 4359 | 1574 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1575 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 1576 return; |
| 1577 | |
| 1578 got_typing_keypress(conv, (gtk_text_iter_is_start(position) && | |
| 1579 gtk_text_iter_is_end(position))); | |
| 1580 } | |
| 1581 | |
| 1582 static void | |
| 1583 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos, | |
| 1584 GtkTextIter *end_pos, gpointer user_data) | |
| 1585 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1586 GaimConversation *conv = (GaimConversation *)user_data; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1587 GaimConvIm *im; |
| 4359 | 1588 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1589 g_return_if_fail(conv != NULL); |
| 4359 | 1590 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1591 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 1592 return; |
| 1593 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1594 im = GAIM_CONV_IM(conv); |
| 4359 | 1595 |
| 1596 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) { | |
| 1597 | |
| 1598 /* We deleted all the text, so turn off typing. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1599 if (gaim_conv_im_get_type_again_timeout(im)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1600 gaim_conv_im_stop_type_again_timeout(im); |
| 4359 | 1601 |
| 1602 serv_send_typing(gaim_conversation_get_gc(conv), | |
| 6695 | 1603 gaim_conversation_get_name(conv), |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
1604 GAIM_NOT_TYPING); |
| 4359 | 1605 } |
| 1606 else { | |
| 1607 /* We're deleting, but not all of it, so it counts as typing. */ | |
| 1608 got_typing_keypress(conv, FALSE); | |
| 1609 } | |
| 1610 } | |
| 1611 | |
| 1612 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1613 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget) |
| 4359 | 1614 { |
| 1615 static GdkCursor *cursor = NULL; | |
| 1616 | |
| 1617 gtkwin->in_drag = TRUE; | |
| 1618 | |
| 1619 if (gtkwin->drag_leave_signal) { | |
| 1620 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1621 gtkwin->drag_leave_signal); | |
| 1622 | |
| 1623 gtkwin->drag_leave_signal = 0; | |
| 1624 } | |
| 1625 | |
| 1626 if (cursor == NULL) | |
| 1627 cursor = gdk_cursor_new(GDK_FLEUR); | |
| 1628 | |
| 1629 /* Grab the pointer */ | |
| 1630 gtk_grab_add(gtkwin->notebook); | |
|
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1631 #ifndef _WIN32 |
|
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1632 /* 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
|
1633 always be true after a button press. */ |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1634 if (!gdk_pointer_is_grabbed()) |
|
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1635 #endif |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1636 gdk_pointer_grab(gtkwin->notebook->window, FALSE, |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1637 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1638 NULL, cursor, GDK_CURRENT_TIME); |
| 4359 | 1639 } |
| 1640 | |
| 1641 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1642 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1643 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1644 GaimGtkWindow *gtkwin; |
| 4359 | 1645 |
| 1646 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1647 | |
| 1648 /* | |
| 1649 * Make sure the user moved the mouse far enough for the | |
| 1650 * drag to be initiated. | |
| 1651 */ | |
| 1652 if (gtkwin->in_predrag) { | |
| 1653 if (e->x_root < gtkwin->drag_min_x || | |
| 1654 e->x_root >= gtkwin->drag_max_x || | |
| 1655 e->y_root < gtkwin->drag_min_y || | |
| 1656 e->y_root >= gtkwin->drag_max_y) { | |
| 1657 | |
| 1658 gtkwin->in_predrag = FALSE; | |
| 1659 notebook_init_grab(gtkwin, widget); | |
| 1660 } | |
| 1661 } | |
| 1662 else { /* Otherwise, draw the arrows. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1663 GaimConvWindow *dest_win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1664 GaimGtkWindow *dest_gtkwin; |
| 4359 | 1665 GtkNotebook *dest_notebook; |
| 1666 GtkWidget *tab, *last_vis_tab = NULL; | |
| 1667 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1; | |
| 1668 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y; | |
| 1669 gboolean horiz_tabs = FALSE, tab_found = FALSE; | |
| 1670 GList *l; | |
| 1671 | |
| 1672 /* Get the window that the cursor is over. */ | |
| 1673 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); | |
| 1674 | |
| 1675 if (dest_win == NULL) { | |
| 1676 dnd_hints_hide_all(); | |
| 1677 | |
| 1678 return TRUE; | |
| 1679 } | |
| 1680 | |
| 1681 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); | |
| 1682 | |
| 1683 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook); | |
| 1684 | |
| 1685 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y); | |
| 1686 | |
| 1687 arrow1_x = arrow2_x = nb_x; | |
| 1688 arrow1_y = arrow2_y = nb_y; | |
| 1689 | |
| 1690 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
| 1691 e->x_root, e->y_root); | |
| 1692 | |
| 1693 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP || | |
| 1694 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) { | |
| 1695 | |
| 1696 horiz_tabs = TRUE; | |
| 1697 } | |
| 1698 | |
| 1699 /* Find out where to put the arrows. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1700 for (l = gaim_conv_window_get_conversations(dest_win), i = 0; |
| 4359 | 1701 l != NULL; |
| 1702 l = l->next, i++) { | |
| 1703 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1704 GaimConversation *conv = l->data; |
| 4359 | 1705 |
| 1706 tab = GAIM_GTK_CONVERSATION(conv)->tabby; | |
| 1707 | |
| 1708 /* | |
| 1709 * If this is the correct tab, record the positions | |
| 1710 * for the arrows. | |
| 1711 */ | |
| 1712 if (i == page_num) { | |
| 1713 if (horiz_tabs) { | |
| 1714 arrow1_x = arrow2_x = nb_x + tab->allocation.x; | |
| 1715 arrow1_y = nb_y + tab->allocation.y; | |
| 1716 arrow2_y = nb_y + tab->allocation.y + | |
| 1717 tab->allocation.height; | |
| 1718 } | |
| 1719 else { | |
| 1720 arrow1_x = nb_x + tab->allocation.x; | |
| 1721 arrow2_x = nb_x + tab->allocation.x + | |
| 1722 tab->allocation.width; | |
| 1723 arrow1_y = arrow2_y = nb_y + tab->allocation.y; | |
| 1724 } | |
| 1725 | |
| 1726 tab_found = TRUE; | |
| 1727 break; | |
| 1728 } | |
| 1729 else { /* Keep track of the right-most tab that we see. */ | |
| 1730 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) { | |
| 1731 last_vis_tab = tab; | |
| 1732 last_vis_tab_loc = tab->allocation.x; | |
| 1733 } | |
| 1734 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) { | |
| 1735 last_vis_tab = tab; | |
| 1736 last_vis_tab_loc = tab->allocation.y; | |
| 1737 } | |
| 1738 } | |
| 1739 } | |
| 1740 | |
| 1741 /* | |
| 1742 * If we didn't find the tab, then we'll just place the | |
| 1743 * arrows to the right/bottom of the last visible tab. | |
| 1744 */ | |
| 1745 if (!tab_found && last_vis_tab) { | |
| 1746 if (horiz_tabs) { | |
| 1747 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x + | |
| 1748 last_vis_tab->allocation.width; | |
| 1749 arrow1_y = nb_y + last_vis_tab->allocation.y; | |
| 1750 arrow2_y = nb_y + last_vis_tab->allocation.y + | |
| 1751 last_vis_tab->allocation.height; | |
| 1752 } | |
| 1753 else { | |
| 1754 arrow1_x = nb_x + last_vis_tab->allocation.x; | |
| 1755 arrow2_x = nb_x + last_vis_tab->allocation.x + | |
| 1756 last_vis_tab->allocation.width; | |
| 1757 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y + | |
| 1758 last_vis_tab->allocation.height; | |
| 1759 } | |
| 1760 } | |
| 1761 | |
| 1762 if (horiz_tabs) { | |
| 1763 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y); | |
| 1764 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y); | |
| 1765 } | |
| 1766 else { | |
| 1767 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y); | |
| 1768 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y); | |
| 1769 } | |
| 1770 } | |
| 1771 | |
| 1772 return TRUE; | |
| 1773 } | |
| 1774 | |
| 1775 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1776 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win) |
| 4359 | 1777 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1778 GaimGtkWindow *gtkwin; |
| 4359 | 1779 |
| 1780 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1781 | |
| 1782 if (gtkwin->in_drag) | |
| 1783 return FALSE; | |
| 1784 | |
| 1785 if (e->x_root < gtkwin->drag_min_x || | |
| 1786 e->x_root >= gtkwin->drag_max_x || | |
| 1787 e->y_root < gtkwin->drag_min_y || | |
| 1788 e->y_root >= gtkwin->drag_max_y) { | |
| 1789 | |
| 1790 gtkwin->in_predrag = FALSE; | |
| 1791 notebook_init_grab(gtkwin, widget); | |
| 1792 } | |
| 1793 | |
| 1794 return TRUE; | |
| 1795 } | |
| 1796 | |
| 1797 /* | |
| 1798 * THANK YOU GALEON! | |
| 1799 */ | |
| 1800 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1801 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1802 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1803 GaimGtkWindow *gtkwin; |
| 4359 | 1804 gint nb_x, nb_y, x_rel, y_rel; |
| 1805 GList *l; | |
| 1806 int tab_clicked; | |
| 1807 | |
| 1808 if (e->button != 1 || e->type != GDK_BUTTON_PRESS) | |
| 1809 return FALSE; | |
| 1810 | |
| 1811 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1812 | |
| 1813 if (gtkwin->in_drag) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1814 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1815 "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
|
1816 return TRUE; |
| 4359 | 1817 } |
| 1818 | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1819 /* |
| 4359 | 1820 * Make sure a tab was actually clicked. The arrow buttons |
| 1821 * mess things up. | |
| 1822 */ | |
| 1823 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root); | |
| 1824 | |
| 1825 if (tab_clicked == -1) | |
| 1826 return FALSE; | |
| 1827 | |
| 1828 /* | |
| 1829 * Get the relative position of the press event, with regards to | |
| 1830 * the position of the notebook. | |
| 1831 */ | |
| 1832 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 1833 | |
| 1834 x_rel = e->x_root - nb_x; | |
| 1835 y_rel = e->y_root - nb_y; | |
| 1836 | |
| 1837 /* Reset the min/max x/y */ | |
| 1838 gtkwin->drag_min_x = 0; | |
| 1839 gtkwin->drag_min_y = 0; | |
| 1840 gtkwin->drag_max_x = 0; | |
| 1841 gtkwin->drag_max_y = 0; | |
| 1842 | |
| 1843 /* Find out which tab was dragged. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1844 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
|
1845 GaimConversation *conv = l->data; |
| 4359 | 1846 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby; |
| 1847 | |
| 1848 if (!GTK_WIDGET_VISIBLE(tab)) | |
| 1849 continue; | |
| 1850 | |
| 1851 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel) | |
| 1852 break; | |
| 1853 | |
| 1854 /* Save the borders of the tab. */ | |
| 1855 gtkwin->drag_min_x = tab->allocation.x + nb_x; | |
| 1856 gtkwin->drag_min_y = tab->allocation.y + nb_y; | |
| 1857 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x; | |
| 1858 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y; | |
| 1859 } | |
| 1860 | |
| 1861 /* Make sure the click occurred in the tab. */ | |
| 1862 if (e->x_root < gtkwin->drag_min_x || | |
| 1863 e->x_root >= gtkwin->drag_max_x || | |
| 1864 e->y_root < gtkwin->drag_min_y || | |
| 1865 e->y_root >= gtkwin->drag_max_y) { | |
| 1866 | |
| 1867 return FALSE; | |
| 1868 } | |
| 1869 | |
| 1870 gtkwin->in_predrag = TRUE; | |
| 1871 | |
| 1872 /* Connect the new motion signals. */ | |
| 1873 gtkwin->drag_motion_signal = | |
| 1874 g_signal_connect(G_OBJECT(widget), "motion_notify_event", | |
| 1875 G_CALLBACK(notebook_motion_cb), win); | |
| 1876 | |
| 1877 gtkwin->drag_leave_signal = | |
| 1878 g_signal_connect(G_OBJECT(widget), "leave_notify_event", | |
| 1879 G_CALLBACK(notebook_leave_cb), win); | |
| 1880 | |
| 1881 return FALSE; | |
| 1882 } | |
| 1883 | |
| 1884 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1885 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1886 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1887 GaimConvWindow *dest_win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1888 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1889 GaimGtkWindow *dest_gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1890 GaimConversation *conv; |
| 4359 | 1891 GtkNotebook *dest_notebook; |
| 1892 gint dest_page_num; | |
| 1893 | |
| 1894 /* | |
| 1895 * Don't check to make sure that the event's window matches the | |
| 1896 * widget's, because we may be getting an event passed on from the | |
| 1897 * close button. | |
| 1898 */ | |
| 1899 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE) | |
| 1900 return FALSE; | |
| 1901 | |
| 1902 if (gdk_pointer_is_grabbed()) { | |
| 1903 gdk_pointer_ungrab(GDK_CURRENT_TIME); | |
| 1904 gtk_grab_remove(widget); | |
| 1905 } | |
| 1906 | |
| 1907 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1908 | |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1909 if (!gtkwin->in_predrag && !gtkwin->in_drag) |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1910 return FALSE; |
| 4359 | 1911 |
| 1912 /* Disconnect the motion signal. */ | |
| 1913 if (gtkwin->drag_motion_signal) { | |
| 1914 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1915 gtkwin->drag_motion_signal); | |
| 1916 | |
| 1917 gtkwin->drag_motion_signal = 0; | |
| 1918 } | |
| 1919 | |
| 1920 /* | |
| 1921 * If we're in a pre-drag, we'll also need to disconnect the leave | |
| 1922 * signal. | |
| 1923 */ | |
| 1924 if (gtkwin->in_predrag) { | |
| 1925 gtkwin->in_predrag = FALSE; | |
| 1926 | |
| 1927 if (gtkwin->drag_leave_signal) { | |
| 1928 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1929 gtkwin->drag_leave_signal); | |
| 1930 | |
| 1931 gtkwin->drag_leave_signal = 0; | |
| 1932 } | |
| 1933 } | |
| 1934 | |
| 1935 /* If we're not in drag... */ | |
| 1936 /* We're perfectly normal people! */ | |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1937 if (!gtkwin->in_drag) |
| 4359 | 1938 return FALSE; |
| 1939 | |
| 1940 gtkwin->in_drag = FALSE; | |
| 1941 | |
| 1942 dnd_hints_hide_all(); | |
| 1943 | |
|
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1944 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); |
| 4359 | 1945 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1946 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 1947 |
| 1948 if (dest_win == NULL) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1949 if (gaim_conv_window_get_conversation_count(win) < 2) |
| 4359 | 1950 return FALSE; |
| 1951 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1952 if (gaim_conv_window_get_conversation_count(win) > 1) { |
| 4359 | 1953 /* Make a new window to stick this to. */ |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1954 GaimGtkConversation *gtkconv; |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1955 gint win_width, win_height; |
| 5121 | 1956 |
| 1957 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4359 | 1958 |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1959 dest_win = gaim_conv_window_new(); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1960 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1961 gaim_conv_window_add_conversation(dest_win, |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1962 gaim_conv_window_remove_conversation(win, |
|
5139
d0182ae31ab8
[gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents:
5133
diff
changeset
|
1963 gaim_conversation_get_index(conv))); |
| 5121 | 1964 |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1965 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1966 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1967 gtk_window_get_size(GTK_WINDOW(dest_gtkwin->window), |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1968 &win_width, &win_height); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1969 |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1970 gtk_window_move(GTK_WINDOW(dest_gtkwin->window), |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1971 e->x_root - (win_width / 2), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1972 e->y_root - (win_height / 2)); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1973 |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1974 gaim_conv_window_show(dest_win); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1975 } |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1976 } else { |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1977 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1978 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1979 /* Get the destination notebook. */ |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1980 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1981 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1982 /* Get the destination page number. */ |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1983 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1984 e->x_root, e->y_root); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1985 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1986 if (win == dest_win) { |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1987 gaim_conv_window_move_conversation(win, |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1988 gaim_conversation_get_index(conv), dest_page_num); |
| 4359 | 1989 } |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1990 else { |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1991 size_t pos; |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1992 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1993 gaim_conv_window_remove_conversation(win, |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1994 gaim_conversation_get_index(conv)); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1995 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1996 pos = gaim_conv_window_add_conversation(dest_win, conv); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1997 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1998 if (pos != dest_page_num) |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
1999 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
2000 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
2001 gaim_conv_window_switch_conversation(dest_win, dest_page_num); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
2002 } |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
2003 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
2004 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); |
| 4359 | 2005 } |
| 2006 | |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
2007 gaim_signal_emit(gaim_gtk_conversations_get_handle(), "conversation-drag-ended", |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
2008 win, dest_win); |
| 4359 | 2009 |
| 2010 return TRUE; | |
| 2011 } | |
| 2012 | |
| 8189 | 2013 /************************************************************************** |
| 2014 * A bunch of buddy icon functions | |
| 2015 **************************************************************************/ | |
| 2016 static GdkPixbuf * | |
|
8755
d0364feabf96
[gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents:
8748
diff
changeset
|
2017 get_tab_icon(GaimConversation *conv, gboolean small_icon) |
| 7143 | 2018 { |
| 2019 GaimAccount *account = gaim_conversation_get_account(conv); | |
| 2020 const char *name = gaim_conversation_get_name(conv); | |
| 2021 GdkPixbuf *status = NULL; | |
| 2022 | |
| 2023 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 2024 GaimBuddy *b = gaim_find_buddy(account, name); | |
| 2025 if (b != NULL) { | |
| 2026 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, | |
|
8755
d0364feabf96
[gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents:
8748
diff
changeset
|
2027 (small_icon ? GAIM_STATUS_ICON_SMALL : GAIM_STATUS_ICON_LARGE)); |
| 7143 | 2028 } |
| 2029 } | |
| 2030 | |
| 2031 if (!status) { | |
| 2032 GdkPixbuf *pixbuf; | |
| 2033 pixbuf = create_prpl_icon(account); | |
| 2034 | |
|
8755
d0364feabf96
[gaim-migrate @ 9510]
Christian Hammond <chipx86@chipx86.com>
parents:
8748
diff
changeset
|
2035 if (small_icon && pixbuf != NULL) |
|
8748
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2036 { |
| 7143 | 2037 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15, |
| 2038 GDK_INTERP_BILINEAR); | |
| 2039 g_object_unref(pixbuf); | |
| 2040 } | |
|
8748
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2041 else |
|
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2042 status = pixbuf; |
| 7143 | 2043 } |
| 2044 return status; | |
| 2045 } | |
| 2046 | |
| 8189 | 2047 static void |
| 2048 update_tab_icon(GaimConversation *conv) | |
| 2049 { | |
| 2050 GaimGtkConversation *gtkconv; | |
| 2051 GaimConvWindow *win = gaim_conversation_get_window(conv); | |
| 2052 GaimAccount *account; | |
| 2053 const char *name; | |
| 2054 GdkPixbuf *status = NULL; | |
| 2055 | |
| 2056 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2057 name = gaim_conversation_get_name(conv); | |
| 2058 account = gaim_conversation_get_account(conv); | |
| 2059 | |
|
8748
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2060 status = get_tab_icon(conv, TRUE); |
| 8189 | 2061 |
| 2062 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); | |
| 2063 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); | |
| 2064 | |
|
8748
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2065 if (status != NULL) |
|
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2066 g_object_unref(status); |
|
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2067 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2068 if (gaim_conv_window_get_active_conversation(win) == conv && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2069 gtkconv->u.im->anim == NULL) |
|
8748
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2070 { |
|
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2071 status = get_tab_icon(conv, FALSE); |
|
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2072 |
| 8189 | 2073 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status); |
| 2074 | |
|
8748
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2075 if (status != NULL) |
|
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2076 g_object_unref(status); |
|
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2077 } |
| 8189 | 2078 } |
| 2079 | |
| 2080 static gboolean | |
| 2081 redraw_icon(gpointer data) | |
| 2082 { | |
| 2083 GaimConversation *conv = (GaimConversation *)data; | |
| 2084 GaimGtkConversation *gtkconv; | |
| 2085 | |
| 2086 GdkPixbuf *buf; | |
| 2087 GdkPixbuf *scale; | |
| 2088 GdkPixmap *pm; | |
| 2089 GdkBitmap *bm; | |
| 2090 gint delay; | |
| 2091 | |
| 2092 if (!g_list_find(gaim_get_ims(), conv)) { | |
| 2093 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", | |
| 2094 "Conversation not found in redraw_icon. I think this " | |
| 2095 "is a bug.\n"); | |
| 2096 return FALSE; | |
| 2097 } | |
| 2098 | |
| 2099 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2100 | |
| 2101 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL); | |
| 2102 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
| 2103 | |
| 2104 scale = gdk_pixbuf_scale_simple(buf, | |
| 2105 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) / | |
| 2106 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
| 2107 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) / | |
| 2108 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
| 2109 GDK_INTERP_NEAREST); | |
| 2110 | |
| 2111 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 2112 g_object_unref(G_OBJECT(scale)); | |
| 2113 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm); | |
| 2114 g_object_unref(G_OBJECT(pm)); | |
| 2115 gtk_widget_queue_draw(gtkconv->u.im->icon); | |
| 2116 | |
| 2117 if (bm) | |
| 2118 g_object_unref(G_OBJECT(bm)); | |
| 2119 | |
| 2120 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; | |
| 2121 | |
| 2122 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv); | |
| 2123 | |
| 2124 return FALSE; | |
| 2125 } | |
| 2126 | |
| 2127 static void | |
| 2128 start_anim(GtkObject *obj, GaimConversation *conv) | |
| 2129 { | |
| 2130 GaimGtkConversation *gtkconv; | |
| 2131 int delay; | |
| 2132 | |
| 2133 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 2134 return; | |
| 2135 | |
| 2136 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2137 | |
| 8228 | 2138 if (gtkconv->u.im->anim == NULL) |
| 2139 return; | |
| 2140 | |
| 8202 | 2141 if (gtkconv->u.im->icon_timer != 0) |
| 2142 return; | |
| 2143 | |
| 8189 | 2144 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) |
| 2145 return; | |
| 2146 | |
| 2147 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; | |
| 2148 | |
| 8758 | 2149 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv); |
| 8189 | 2150 } |
| 2151 | |
| 2152 static void | |
| 2153 stop_anim(GtkObject *obj, GaimConversation *conv) | |
| 2154 { | |
| 2155 GaimGtkConversation *gtkconv; | |
| 2156 | |
| 2157 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 2158 return; | |
| 2159 | |
| 2160 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2161 | |
| 2162 if (gtkconv->u.im->icon_timer != 0) | |
| 2163 g_source_remove(gtkconv->u.im->icon_timer); | |
| 2164 | |
| 2165 gtkconv->u.im->icon_timer = 0; | |
| 2166 } | |
| 2167 | |
| 2168 static void | |
| 2169 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv) | |
| 2170 { | |
| 2171 GaimGtkConversation *gtkconv; | |
| 2172 | |
| 2173 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 2174 return; | |
| 2175 | |
| 2176 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2177 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2178 gtkconv->u.im->animate = |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2179 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)); |
| 8189 | 2180 |
| 2181 if (gtkconv->u.im->animate) | |
| 2182 start_anim(NULL, conv); | |
| 2183 else | |
| 2184 stop_anim(NULL, conv); | |
| 2185 } | |
| 2186 static void | |
| 2187 remove_icon(GaimGtkConversation *gtkconv) | |
| 2188 { | |
| 2189 g_return_if_fail(gtkconv != NULL); | |
| 2190 | |
| 2191 if (gtkconv->u.im->icon != NULL) | |
| 8821 | 2192 gtk_widget_destroy(gtkconv->u.im->icon->parent->parent->parent); |
| 8189 | 2193 |
| 2194 if (gtkconv->u.im->anim != NULL) | |
| 2195 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); | |
| 2196 | |
| 2197 if (gtkconv->u.im->icon_timer != 0) | |
| 2198 g_source_remove(gtkconv->u.im->icon_timer); | |
| 2199 | |
| 2200 if (gtkconv->u.im->iter != NULL) | |
| 2201 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 2202 | |
| 2203 gtkconv->u.im->icon_timer = 0; | |
| 2204 gtkconv->u.im->icon = NULL; | |
| 2205 gtkconv->u.im->anim = NULL; | |
| 2206 gtkconv->u.im->iter = NULL; | |
| 2207 } | |
| 2208 | |
| 2209 static gboolean | |
| 2210 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv) | |
| 2211 { | |
| 2212 GaimGtkConversation *gtkconv; | |
| 2213 static GtkWidget *menu = NULL; | |
| 2214 GtkWidget *button; | |
| 2215 | |
| 2216 if (e->button != 3 || e->type != GDK_BUTTON_PRESS) | |
| 2217 return FALSE; | |
| 2218 | |
| 2219 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2220 | |
| 2221 /* | |
| 2222 * If a menu already exists, destroy it before creating a new one, | |
| 2223 * thus freeing-up the memory it occupied. | |
| 2224 */ | |
| 2225 if (menu != NULL) | |
| 2226 gtk_widget_destroy(menu); | |
| 2227 | |
| 2228 menu = gtk_menu_new(); | |
| 2229 | |
| 2230 if (gtkconv->u.im->anim && | |
| 2231 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))) | |
| 2232 { | |
| 2233 gaim_new_check_item(menu, _("Animate"), | |
| 2234 G_CALLBACK(toggle_icon_animate_cb), conv, | |
| 2235 gtkconv->u.im->icon_timer); | |
| 2236 } | |
| 2237 | |
| 2238 button = gtk_menu_item_new_with_label(_("Hide Icon")); | |
| 2239 g_signal_connect_swapped(G_OBJECT(button), "activate", | |
| 2240 G_CALLBACK(remove_icon), gtkconv); | |
| 2241 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 2242 gtk_widget_show(button); | |
| 2243 | |
| 2244 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS, | |
| 2245 G_CALLBACK(gaim_gtk_save_icon_dialog), conv, | |
| 2246 0, 0, NULL); | |
| 2247 | |
| 2248 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); | |
| 2249 | |
| 2250 return TRUE; | |
| 2251 } | |
| 2252 /************************************************************************** | |
| 2253 * End of the bunch of buddy icon functions | |
| 2254 **************************************************************************/ | |
| 2255 | |
| 7887 | 2256 /* |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2257 * Makes sure all the menu items and all the buttons are hidden/shown and |
|
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8730
diff
changeset
|
2258 * sensitive/insensitive. This is called after changing tabs and when an |
| 7887 | 2259 * account signs on or off. |
| 2260 */ | |
| 4359 | 2261 static void |
| 7887 | 2262 gray_stuff_out(GaimConversation *conv) |
| 4359 | 2263 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2264 GaimConvWindow *win; |
| 7887 | 2265 GaimGtkWindow *gtkwin; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2266 GaimGtkConversation *gtkconv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2267 GaimConnection *gc; |
| 7887 | 2268 GaimPluginProtocolInfo *prpl_info = NULL; |
| 7222 | 2269 GdkPixbuf *window_icon = NULL; |
| 8439 | 2270 GtkIMHtmlButtons buttons; |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2271 |
| 7887 | 2272 win = gaim_conversation_get_window(conv); |
| 4359 | 2273 gtkwin = GAIM_GTK_WINDOW(win); |
| 2274 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7887 | 2275 gc = gaim_conversation_get_gc(conv); |
| 8439 | 2276 |
| 7879 | 2277 if (gc != NULL) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
2278 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2279 |
| 7887 | 2280 if (gtkwin->menu.send_as != NULL) |
| 2281 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); | |
| 2282 | |
| 2283 /* | |
| 2284 * Handle hiding and showing stuff based on what type of conv this is. | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2285 * Stuff that Gaim IMs support in general should be shown for IM |
|
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8730
diff
changeset
|
2286 * conversations. Stuff that Gaim chats support in general should be |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2287 * shown for chat conversations. It doesn't matter whether the PRPL |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2288 * supports it or not--that only affects if the button or menu item |
| 7929 | 2289 * is sensitive or not. |
| 7887 | 2290 */ |
| 4359 | 2291 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 7887 | 2292 /* Show stuff that applies to IMs, hide stuff that applies to chats */ |
| 2293 | |
| 2294 /* Deal with buttons */ | |
| 2295 gtk_widget_show(gtkconv->info); | |
| 2296 gtk_widget_show(gtkconv->send); | |
| 2297 gtk_widget_show(gtkconv->u.im->warn); | |
| 2298 gtk_widget_show(gtkconv->u.im->block); | |
| 2299 | |
| 2300 /* Deal with menu items */ | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2301 gtk_widget_show(gtkwin->menu.view_log); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2302 gtk_widget_show(gtkwin->menu.add_pounce); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2303 gtk_widget_show(gtkwin->menu.get_info); |
| 7887 | 2304 gtk_widget_show(gtkwin->menu.warn); |
| 7859 | 2305 gtk_widget_hide(gtkwin->menu.invite); |
| 7887 | 2306 gtk_widget_show(gtkwin->menu.alias); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2307 gtk_widget_show(gtkwin->menu.block); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2308 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2309 if (gaim_find_buddy(gaim_conversation_get_account(conv), |
| 7143 | 2310 gaim_conversation_get_name(conv)) == NULL) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2311 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2312 gtk_widget_hide(gtkwin->menu.remove); |
| 7929 | 2313 gtk_widget_show(gtkconv->add); |
| 2314 gtk_widget_hide(gtkconv->remove); | |
| 7859 | 2315 } else { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2316 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2317 gtk_widget_hide(gtkwin->menu.add); |
| 7929 | 2318 gtk_widget_hide(gtkconv->add); |
| 2319 gtk_widget_show(gtkconv->remove); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2320 } |
| 7887 | 2321 |
| 2322 gtk_widget_show(gtkwin->menu.insert_link); | |
| 8756 | 2323 /* XXX - IMIMAGE - Fix IM images then show this. */ |
| 2324 gtk_widget_hide(gtkwin->menu.insert_image); | |
| 7887 | 2325 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
| 2326 /* Show stuff that applies to IMs, hide stuff that applies to chats */ | |
| 2327 | |
| 2328 /* Deal with buttons */ | |
| 7952 | 2329 gtk_widget_show(gtkconv->info); |
| 7887 | 2330 gtk_widget_show(gtkconv->send); |
| 2331 gtk_widget_show(gtkconv->u.chat->invite); | |
| 2332 | |
| 2333 /* Deal with menu items */ | |
| 7859 | 2334 gtk_widget_hide(gtkwin->menu.view_log); |
| 2335 gtk_widget_hide(gtkwin->menu.add_pounce); | |
| 2336 gtk_widget_hide(gtkwin->menu.get_info); | |
| 7887 | 2337 gtk_widget_hide(gtkwin->menu.warn); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2338 gtk_widget_show(gtkwin->menu.invite); |
| 7887 | 2339 gtk_widget_show(gtkwin->menu.alias); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2340 gtk_widget_hide(gtkwin->menu.block); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2341 |
| 7879 | 2342 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), |
| 2343 gaim_conversation_get_name(conv)) == NULL) { | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2344 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2345 gtk_widget_hide(gtkwin->menu.remove); |
| 7929 | 2346 gtk_widget_show(gtkconv->add); |
| 2347 gtk_widget_hide(gtkconv->remove); | |
| 7859 | 2348 } else { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2349 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2350 gtk_widget_hide(gtkwin->menu.add); |
| 7929 | 2351 gtk_widget_hide(gtkconv->add); |
| 2352 gtk_widget_show(gtkconv->remove); | |
| 7887 | 2353 } |
| 2354 | |
| 2355 gtk_widget_show(gtkwin->menu.insert_link); | |
| 2356 gtk_widget_hide(gtkwin->menu.insert_image); | |
| 2357 } | |
| 2358 | |
| 2359 /* | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2360 * Handle graying stuff out based on whether an account is connected |
| 7887 | 2361 * and what features that account supports. |
| 2362 */ | |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2363 if ((gc != NULL) && |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2364 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) || |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2365 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) { |
| 7887 | 2366 /* Account is online */ |
| 2367 | |
| 2368 /* Deal with buttons */ | |
| 7929 | 2369 gtk_widget_set_sensitive(gtkconv->add, TRUE); |
| 2370 gtk_widget_set_sensitive(gtkconv->remove, TRUE); | |
| 7887 | 2371 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL)); |
| 7929 | 2372 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2373 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2374 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2375 gtk_widget_set_sensitive(gtkconv->send, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2376 (prpl_info->send_im != NULL)); |
| 7887 | 2377 gtk_widget_set_sensitive(gtkconv->u.im->warn, |
| 2378 (prpl_info->warn != NULL)); | |
| 2379 gtk_widget_set_sensitive(gtkconv->u.im->block, | |
| 2380 (prpl_info->add_deny != NULL)); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2381 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2382 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2383 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2384 gtk_widget_set_sensitive(gtkconv->send, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2385 (prpl_info->chat_send != NULL)); |
| 7887 | 2386 gtk_widget_set_sensitive(gtkconv->u.chat->invite, |
| 2387 (prpl_info->chat_invite != NULL)); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2388 } |
| 7887 | 2389 |
| 2390 /* Deal with the toolbar */ | |
| 8422 | 2391 |
| 8420 | 2392 if (gc->flags & GAIM_CONNECTION_HTML) { |
| 8677 | 2393 buttons = GTK_IMHTML_ALL; /* Everything on */ |
| 8420 | 2394 if (!(prpl_info->options & OPT_PROTO_IM_IMAGE)) |
| 8422 | 2395 buttons &= ~GTK_IMHTML_IMAGE; |
| 8420 | 2396 if (gc->flags & GAIM_CONNECTION_NO_BGCOLOR) |
| 8422 | 2397 buttons &= ~GTK_IMHTML_BACKCOLOR; |
|
8691
0eb5161ef333
[gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents:
8690
diff
changeset
|
2398 if (gc->flags & GAIM_CONNECTION_NO_FONTSIZE) { |
|
0eb5161ef333
[gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents:
8690
diff
changeset
|
2399 buttons &= ~GTK_IMHTML_GROW; |
|
0eb5161ef333
[gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents:
8690
diff
changeset
|
2400 buttons &= ~GTK_IMHTML_SHRINK; |
|
0eb5161ef333
[gaim-migrate @ 9444]
Christian Hammond <chipx86@chipx86.com>
parents:
8690
diff
changeset
|
2401 } |
| 8420 | 2402 } else { |
| 8422 | 2403 buttons = GTK_IMHTML_SMILEY; |
| 8420 | 2404 } |
| 2405 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons); | |
| 8427 | 2406 gtk_imhtmltoolbar_associate_smileys (GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(gaim_conversation_get_account(conv))); |
| 8422 | 2407 |
|
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2408 /* Deal with menu items */ |
| 7887 | 2409 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); |
| 2410 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | |
| 2411 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL)); | |
| 2412 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL)); | |
| 2413 gtk_widget_set_sensitive(gtkwin->menu.invite, | |
| 2414 (prpl_info->chat_invite != NULL)); | |
|
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2415 |
| 7887 | 2416 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 2417 if (gaim_find_buddy(gaim_conversation_get_account(conv), | |
| 2418 gaim_conversation_get_name(conv)) == NULL) | |
| 2419 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
| 2420 else | |
| 2421 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | |
| 2422 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 2423 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), | |
| 2424 gaim_conversation_get_name(conv)) == NULL) | |
| 2425 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
| 2426 else | |
| 2427 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | |
| 2428 } | |
| 2429 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2430 gtk_widget_set_sensitive(gtkwin->menu.block, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2431 (prpl_info->add_deny != NULL)); |
| 7887 | 2432 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); |
| 7859 | 2433 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); |
| 8758 | 2434 gtk_widget_set_sensitive(gtkwin->menu.insert_link, |
| 2435 gc->flags & GAIM_CONNECTION_HTML); | |
| 7887 | 2436 gtk_widget_set_sensitive(gtkwin->menu.insert_image, |
| 2437 (prpl_info->options & OPT_PROTO_IM_IMAGE)); | |
| 2438 } else { | |
| 2439 /* Account is offline */ | |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2440 /* Or it's a chat where we left. */ |
| 7887 | 2441 |
| 2442 /* Deal with buttons */ | |
| 7929 | 2443 gtk_widget_set_sensitive(gtkconv->add, FALSE); |
| 2444 gtk_widget_set_sensitive(gtkconv->remove, FALSE); | |
| 7887 | 2445 gtk_widget_set_sensitive(gtkconv->info, FALSE); |
| 2446 gtk_widget_set_sensitive(gtkconv->send, FALSE); | |
| 2447 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 2448 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE); | |
| 2449 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE); | |
| 2450 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 2451 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE); | |
| 2452 } | |
|
8748
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2453 |
| 7887 | 2454 /* Then deal with menu items */ |
| 2455 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); | |
| 2456 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | |
| 2457 gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE); | |
| 2458 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE); | |
| 2459 gtk_widget_set_sensitive(gtkwin->menu.invite, FALSE); | |
| 2460 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
| 2461 gtk_widget_set_sensitive(gtkwin->menu.block, FALSE); | |
| 2462 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); | |
| 2463 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); | |
| 7929 | 2464 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
| 7887 | 2465 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); |
| 2466 } | |
| 2467 | |
| 2468 /* | |
| 2469 * Update the window's icon | |
| 2470 */ | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2471 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2472 (gtkconv->u.im->anim)) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2473 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2474 window_icon = |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2475 gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); |
| 7887 | 2476 g_object_ref(window_icon); |
| 2477 } else { | |
|
8748
13d592f485d1
[gaim-migrate @ 9503]
Christian Hammond <chipx86@chipx86.com>
parents:
8735
diff
changeset
|
2478 window_icon = get_tab_icon(conv, FALSE); |
| 4359 | 2479 } |
| 7887 | 2480 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); |
| 2481 g_object_unref(G_OBJECT(window_icon)); | |
| 2482 } | |
| 2483 | |
| 2484 static void | |
| 8189 | 2485 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
| 2486 gpointer user_data) | |
| 2487 { | |
| 2488 GaimConvWindow *win; | |
| 2489 GaimConversation *conv; | |
| 2490 GaimGtkConversation *gtkconv; | |
| 2491 | |
| 2492 win = (GaimConvWindow *)user_data; | |
| 2493 conv = gaim_conv_window_get_active_conversation(win); | |
| 2494 | |
| 2495 g_return_if_fail(conv != NULL); | |
| 2496 | |
| 8192 | 2497 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM) |
| 2498 return; | |
| 2499 | |
| 8189 | 2500 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 2501 | |
| 2502 stop_anim(NULL, conv); | |
| 2503 } | |
| 2504 | |
| 2505 static void | |
| 7887 | 2506 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
| 2507 gpointer user_data) | |
| 2508 { | |
| 2509 GaimConvWindow *win; | |
| 2510 GaimConversation *conv; | |
| 2511 GaimGtkConversation *gtkconv; | |
| 2512 GaimGtkWindow *gtkwin; | |
| 2513 | |
| 2514 win = (GaimConvWindow *)user_data; | |
| 2515 conv = gaim_conv_window_get_conversation_at(win, page_num); | |
| 2516 | |
| 2517 g_return_if_fail(conv != NULL); | |
| 2518 | |
| 2519 gtkwin = GAIM_GTK_WINDOW(win); | |
| 2520 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2521 | |
| 2522 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE); | |
| 2523 | |
| 2524 /* Update the menubar */ | |
| 2525 gray_stuff_out(conv); | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2526 |
| 4736 | 2527 update_typing_icon(conv); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2528 |
| 4359 | 2529 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging), |
| 7143 | 2530 gaim_conversation_is_logging(conv)); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2531 |
| 4359 | 2532 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds), |
| 7143 | 2533 gtkconv->make_sound); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2534 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2535 gtk_check_menu_item_set_active( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2536 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2537 gtkconv->show_formatting_toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2538 |
| 8189 | 2539 /* |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2540 * We pause icons when they are not visible. If this icon should |
| 8189 | 2541 * be animated then start it back up again.lll |
| 2542 */ | |
| 8192 | 2543 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && |
| 2544 (gtkconv->u.im->animate)) | |
| 8189 | 2545 start_anim(NULL, conv); |
| 2546 | |
| 4359 | 2547 gtk_widget_grab_focus(gtkconv->entry); |
| 4681 | 2548 |
| 4965 | 2549 gtk_window_set_title(GTK_WINDOW(gtkwin->window), |
| 7143 | 2550 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
| 4359 | 2551 } |
| 2552 | |
| 2553 /************************************************************************** | |
| 2554 * Utility functions | |
| 2555 **************************************************************************/ | |
| 2556 | |
| 2557 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2558 got_typing_keypress(GaimConversation *conv, gboolean first) |
| 4359 | 2559 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2560 GaimConvIm *im; |
| 4685 | 2561 |
| 4359 | 2562 /* |
| 2563 * 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
|
2564 * send GAIM_TYPED any time soon. |
| 4359 | 2565 */ |
| 2566 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2567 im = GAIM_CONV_IM(conv); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2568 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2569 if (gaim_conv_im_get_type_again_timeout(im)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2570 gaim_conv_im_stop_type_again_timeout(im); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2571 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2572 gaim_conv_im_start_type_again_timeout(im); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2573 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2574 if (first || (gaim_conv_im_get_type_again(im) != 0 && |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2575 time(NULL) > gaim_conv_im_get_type_again(im))) { |
| 4359 | 2576 |
| 2577 int timeout = serv_send_typing(gaim_conversation_get_gc(conv), | |
| 2578 (char *)gaim_conversation_get_name(conv), | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2579 GAIM_TYPING); |
| 4359 | 2580 |
| 2581 if (timeout) | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2582 gaim_conv_im_set_type_again(im, time(NULL) + timeout); |
| 4359 | 2583 else |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2584 gaim_conv_im_set_type_again(im, 0); |
| 4359 | 2585 } |
| 2586 } | |
| 2587 | |
| 4736 | 2588 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2589 update_typing_icon(GaimConversation *conv) |
| 4736 | 2590 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2591 GaimGtkWindow *gtkwin; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2592 GaimConvIm *im = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2593 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4736 | 2594 |
| 2595 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); | |
| 2596 | |
| 2597 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2598 im = GAIM_CONV_IM(conv); |
| 4736 | 2599 |
| 2600 if(gtkwin->menu.typing_icon) { | |
| 2601 gtk_widget_destroy(gtkwin->menu.typing_icon); | |
| 2602 gtkwin->menu.typing_icon = NULL; | |
| 2603 } | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2604 if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) { |
| 4736 | 2605 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
| 2606 gtk_image_menu_item_set_image( | |
| 2607 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
| 2608 gtk_image_new_from_stock(GAIM_STOCK_TYPING, | |
| 2609 GTK_ICON_SIZE_MENU)); | |
| 4757 | 2610 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
| 4736 | 2611 _("User is typing..."), NULL); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2612 } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) { |
| 4736 | 2613 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
| 2614 gtk_image_menu_item_set_image( | |
| 2615 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
| 2616 gtk_image_new_from_stock(GAIM_STOCK_TYPED, | |
| 2617 GTK_ICON_SIZE_MENU)); | |
| 4757 | 2618 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
| 4736 | 2619 _("User has typed something and paused"), NULL); |
| 2620 } | |
| 2621 | |
| 2622 if(gtkwin->menu.typing_icon) { | |
| 2623 gtk_menu_item_set_right_justified( | |
| 2624 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE); | |
| 2625 gtk_widget_show_all(gtkwin->menu.typing_icon); | |
| 2626 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar), | |
| 2627 gtkwin->menu.typing_icon); | |
| 2628 } | |
| 2629 } | |
| 2630 | |
| 4685 | 2631 static gboolean |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2632 update_send_as_selection(GaimConvWindow *win) |
| 4359 | 2633 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2634 GaimAccount *account; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2635 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2636 GaimGtkWindow *gtkwin; |
| 4359 | 2637 GtkWidget *menu; |
| 2638 GList *child; | |
| 2639 | |
|
7090
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2640 if (g_list_find(gaim_get_windows(), win) == NULL) |
|
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2641 return FALSE; |
| 4849 | 2642 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2643 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 2644 |
|
5860
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2645 if (conv == NULL) |
|
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2646 return FALSE; |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2647 |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2648 account = gaim_conversation_get_account(conv); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2649 gtkwin = GAIM_GTK_WINDOW(win); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2650 |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2651 if (gtkwin->menu.send_as == NULL) |
| 4685 | 2652 return FALSE; |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2653 |
| 4359 | 2654 gtk_widget_show(gtkwin->menu.send_as); |
| 2655 | |
| 2656 menu = gtk_menu_item_get_submenu( | |
| 2657 GTK_MENU_ITEM(gtkwin->menu.send_as)); | |
| 2658 | |
| 2659 for (child = gtk_container_get_children(GTK_CONTAINER(menu)); | |
| 2660 child != NULL; | |
| 2661 child = child->next) { | |
| 2662 | |
| 2663 GtkWidget *item = child->data; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2664 GaimAccount *item_account = g_object_get_data(G_OBJECT(item), |
| 4673 | 2665 "gaim_account"); |
| 2666 | |
| 2667 if (account == item_account) { | |
| 4359 | 2668 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); |
| 2669 break; | |
| 2670 } | |
| 2671 } | |
|
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2672 |
| 4685 | 2673 return FALSE; |
| 4359 | 2674 } |
| 2675 | |
| 2676 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2677 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv) |
| 4359 | 2678 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2679 GaimGtkWindow *gtkwin; |
| 4359 | 2680 GtkWidget *menu; |
| 2681 GtkWidget *menuitem; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2682 GList *gcs; |
| 4359 | 2683 GList *convs; |
| 2684 GSList *group = NULL; | |
| 2685 gboolean first_offline = TRUE; | |
| 2686 gboolean found_online = FALSE; | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2687 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| 4359 | 2688 |
| 2689 gtkwin = GAIM_GTK_WINDOW(win); | |
| 2690 | |
| 2691 if (gtkwin->menu.send_as != NULL) | |
| 2692 gtk_widget_destroy(gtkwin->menu.send_as); | |
| 2693 | |
| 2694 /* See if we have > 1 connection active. */ | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2695 if (g_list_length(gaim_connections_get_all()) < 2) { |
| 4359 | 2696 /* Now make sure we don't have any Offline entries. */ |
| 2697 gboolean found_offline = FALSE; | |
| 2698 | |
| 2699 for (convs = gaim_get_conversations(); | |
| 2700 convs != NULL; | |
| 2701 convs = convs->next) { | |
| 2702 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2703 GaimConversation *conv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2704 GaimAccount *account; |
| 4491 | 2705 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2706 conv = (GaimConversation *)convs->data; |
| 4491 | 2707 account = gaim_conversation_get_account(conv); |
| 2708 | |
|
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2709 if (account != NULL && account->gc == NULL) { |
| 4359 | 2710 found_offline = TRUE; |
| 2711 break; | |
| 2712 } | |
| 2713 } | |
| 2714 | |
| 2715 if (!found_offline) { | |
| 2716 gtkwin->menu.send_as = NULL; | |
| 2717 return; | |
| 2718 } | |
| 2719 } | |
| 2720 | |
| 2721 /* Build the Send As menu */ | |
| 2722 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As")); | |
| 2723 gtk_widget_show(gtkwin->menu.send_as); | |
| 2724 | |
| 2725 menu = gtk_menu_new(); | |
|
7857
43f63ff8a6d8
[gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents:
7855
diff
changeset
|
2726 gtk_menu_shell_insert(GTK_MENU_SHELL(gtkwin->menu.menubar), |
|
43f63ff8a6d8
[gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents:
7855
diff
changeset
|
2727 gtkwin->menu.send_as, 2); |
| 4359 | 2728 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu); |
| 2729 | |
| 2730 gtk_widget_show(menu); | |
| 2731 | |
| 2732 /* Fill it with entries. */ | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2733 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) { |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2734 |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2735 GaimConnection *gc; |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2736 GaimAccount *account; |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2737 GtkWidget *box; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2738 GtkWidget *label; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2739 GtkWidget *image; |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2740 GdkPixbuf *pixbuf, *scale; |
| 4359 | 2741 |
| 2742 found_online = TRUE; | |
| 2743 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2744 gc = (GaimConnection *)gcs->data; |
| 4359 | 2745 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2746 /* Create a pixmap for the protocol icon. */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2747 pixbuf = create_prpl_icon(gc->account); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2748 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
|
2749 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2750 /* Now convert it to GtkImage */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2751 if (pixbuf == NULL) |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2752 image = gtk_image_new(); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2753 else |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2754 image = gtk_image_new_from_pixbuf(scale); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2755 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2756 gtk_size_group_add_widget(sg, image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2757 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2758 g_object_unref(G_OBJECT(scale)); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2759 g_object_unref(G_OBJECT(pixbuf)); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2760 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2761 account = gaim_connection_get_account(gc); |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2762 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2763 /* Make our menu item */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2764 menuitem = gtk_radio_menu_item_new_with_label(group, |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2765 gaim_account_get_username(account)); |
| 4793 | 2766 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 4359 | 2767 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2768 /* Do some evil, see some evil, speak some evil. */ |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2769 box = gtk_hbox_new(FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2770 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2771 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2772 g_object_ref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2773 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2774 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2775 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2776 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2777 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2778 g_object_unref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2779 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2780 gtk_container_add(GTK_CONTAINER(menuitem), box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2781 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2782 gtk_widget_show(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2783 gtk_widget_show(image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2784 gtk_widget_show(box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2785 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2786 /* Set our data and callbacks. */ |
| 4359 | 2787 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
| 4673 | 2788 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account); |
| 4359 | 2789 |
| 4786 | 2790 g_signal_connect(G_OBJECT(menuitem), "activate", |
| 4673 | 2791 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
| 4359 | 2792 |
| 2793 gtk_widget_show(menuitem); | |
| 2794 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2795 } | |
| 2796 | |
| 2797 /* | |
| 2798 * Fill it with any accounts that still has an open (yet disabled) window | |
| 2799 * (signed off accounts with a window open). | |
| 2800 */ | |
| 2801 for (convs = gaim_get_conversations(); | |
| 2802 convs != NULL; | |
| 2803 convs = convs->next) { | |
| 2804 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2805 GaimConversation *conv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2806 GaimAccount *account; |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2807 GtkWidget *box; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2808 GtkWidget *label; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2809 GtkWidget *image; |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2810 GdkPixbuf *pixbuf, *scale; |
| 4359 | 2811 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2812 conv = (GaimConversation *)convs->data; |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2813 |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2814 if (conv == deleted_conv) |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2815 continue; |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2816 |
| 4491 | 2817 account = gaim_conversation_get_account(conv); |
| 2818 | |
|
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2819 if (account != NULL && account->gc == NULL) { |
| 4359 | 2820 if (first_offline && found_online) { |
| 2821 menuitem = gtk_separator_menu_item_new(); | |
| 2822 gtk_widget_show(menuitem); | |
| 2823 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2824 | |
| 2825 first_offline = FALSE; | |
| 2826 } | |
| 2827 | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2828 /* Create a pixmap for the protocol icon. */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2829 pixbuf = create_prpl_icon(account); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2830 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2831 GDK_INTERP_BILINEAR); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2832 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2833 /* Now convert it to GtkImage */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2834 if (pixbuf == NULL) |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2835 image = gtk_image_new(); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2836 else |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2837 image = gtk_image_new_from_pixbuf(scale); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2838 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2839 gtk_size_group_add_widget(sg, image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2840 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2841 if (scale != NULL) g_object_unref(scale); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2842 if (pixbuf != NULL) g_object_unref(pixbuf); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2843 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2844 /* Make our menu item */ |
| 4359 | 2845 menuitem = gtk_radio_menu_item_new_with_label(group, |
| 4491 | 2846 account->username); |
| 4793 | 2847 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 4359 | 2848 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2849 /* Do some evil, see some evil, speak some evil. */ |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2850 box = gtk_hbox_new(FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2851 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2852 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2853 g_object_ref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2854 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2855 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2856 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2857 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2858 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2859 g_object_unref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2860 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2861 gtk_container_add(GTK_CONTAINER(menuitem), box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2862 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2863 gtk_widget_show(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2864 gtk_widget_show(image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2865 gtk_widget_show(box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2866 |
| 4359 | 2867 gtk_widget_set_sensitive(menuitem, FALSE); |
| 4786 | 2868 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
| 4674 | 2869 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account); |
| 4359 | 2870 |
| 4786 | 2871 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
2872 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
| 4786 | 2873 |
| 4359 | 2874 gtk_widget_show(menuitem); |
| 2875 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2876 } | |
| 2877 } | |
| 2878 | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2879 g_object_unref(sg); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2880 |
| 4359 | 2881 gtk_widget_show(gtkwin->menu.send_as); |
| 2882 update_send_as_selection(win); | |
| 2883 } | |
| 2884 | |
| 2885 static GList * | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2886 generate_invite_user_names(GaimConnection *gc) |
| 4359 | 2887 { |
| 6695 | 2888 GaimBlistNode *gnode,*cnode,*bnode; |
| 4359 | 2889 static GList *tmp = NULL; |
| 2890 | |
| 2891 if (tmp) | |
| 2892 g_list_free(tmp); | |
| 2893 | |
| 2894 tmp = g_list_append(NULL, ""); | |
| 2895 | |
| 2896 if (gc != NULL) { | |
| 4785 | 2897 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 2898 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 2899 continue; | |
| 6695 | 2900 for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 2901 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 4785 | 2902 continue; |
| 6695 | 2903 for(bnode = cnode->child; bnode; bnode = bnode->next) { |
| 2904 GaimBuddy *buddy; | |
| 2905 | |
| 2906 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 2907 continue; | |
| 2908 | |
| 2909 buddy = (GaimBuddy *)bnode; | |
| 2910 | |
| 2911 if (buddy->account == gc->account && | |
| 2912 GAIM_BUDDY_IS_ONLINE(buddy)) | |
| 2913 tmp = g_list_append(tmp, buddy->name); | |
| 2914 } | |
| 4359 | 2915 } |
| 2916 } | |
| 2917 } | |
| 2918 | |
| 2919 return tmp; | |
| 2920 } | |
| 2921 | |
| 2922 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2923 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos) |
| 4359 | 2924 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2925 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2926 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2927 GaimConvChat *chat; |
| 4359 | 2928 GtkTreeIter iter; |
| 2929 GtkListStore *ls; | |
| 2930 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2931 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 2932 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 2933 gtkchat = gtkconv->u.chat; | |
| 2934 | |
| 2935 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list))); | |
| 2936 | |
| 2937 gtk_list_store_append(ls, &iter); | |
| 2938 gtk_list_store_set(ls, &iter, 0, | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2939 (gaim_conv_chat_is_user_ignored(chat, name) ? "X" : " "), |
| 4359 | 2940 1, name, -1); |
| 2941 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
| 2942 GTK_SORT_ASCENDING); | |
| 2943 } | |
| 2944 | |
| 2945 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2946 tab_complete(GaimConversation *conv) |
| 4359 | 2947 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2948 GaimGtkConversation *gtkconv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2949 GaimConvChat *chat; |
| 4359 | 2950 GtkTextIter cursor, word_start, start_buffer; |
| 2951 int start; | |
| 2952 int most_matched = -1; | |
| 2953 char *entered, *partial = NULL; | |
| 2954 char *text; | |
| 8021 | 2955 char *nick_partial; |
| 4359 | 2956 GList *matches = NULL; |
| 2957 GList *nicks = NULL; | |
| 2958 | |
| 2959 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2960 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 2961 |
| 2962 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 2963 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2964 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2965 | |
| 2966 word_start = cursor; | |
| 2967 | |
| 2968 /* if there's nothing there just return */ | |
| 2969 if (!gtk_text_iter_compare(&cursor, &start_buffer)) | |
| 2970 return; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
2971 |
| 4359 | 2972 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer, |
| 2973 &cursor, FALSE); | |
| 2974 | |
| 2975 /* if we're at the end of ": " we need to move back 2 spaces */ | |
| 2976 start = strlen(text) - 1; | |
| 2977 | |
| 8021 | 2978 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) { |
| 4359 | 2979 gtk_text_iter_backward_chars(&word_start, 2); |
| 8021 | 2980 start-=2; |
| 2981 } | |
| 4359 | 2982 |
| 2983 /* find the start of the word that we're tabbing */ | |
| 2984 while (start >= 0 && text[start] != ' ') { | |
| 2985 gtk_text_iter_backward_char(&word_start); | |
| 2986 start--; | |
| 2987 } | |
| 2988 | |
| 2989 g_free(text); | |
| 2990 | |
| 2991 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start, | |
| 2992 &cursor, FALSE); | |
| 2993 | |
| 8021 | 2994 if (!g_utf8_strlen(entered, -1)) { |
| 4359 | 2995 g_free(entered); |
| 2996 return; | |
| 2997 } | |
| 2998 | |
| 8021 | 2999 nick_partial = g_malloc(strlen(entered)+1); |
| 3000 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3001 for (nicks = gaim_conv_chat_get_users(chat); |
| 4359 | 3002 nicks != NULL; |
| 3003 nicks = nicks->next) { | |
| 3004 | |
| 3005 char *nick = nicks->data; | |
| 8021 | 3006 |
| 8159 | 3007 strncpy(nick_partial, nick, strlen(entered)); |
| 8172 | 3008 nick_partial[strlen(entered)] = '\0'; |
| 8021 | 3009 if(gaim_utf8_strcasecmp(nick_partial, entered)) |
| 3010 continue; | |
| 4359 | 3011 |
| 3012 /* if we're here, it's a possible completion */ | |
| 3013 | |
| 3014 if (most_matched == -1) { | |
| 3015 /* | |
| 3016 * this will only get called once, since from now | |
| 3017 * on most_matched is >= 0 | |
| 3018 */ | |
| 3019 most_matched = strlen(nick); | |
| 3020 partial = g_strdup(nick); | |
| 3021 } | |
| 3022 else if (most_matched) { | |
| 8021 | 3023 char *tmp = g_strdup(nick); |
| 3024 | |
| 3025 while (gaim_utf8_strcasecmp(tmp, partial)) { | |
| 3026 partial[most_matched] = '\0'; | |
| 3027 if(most_matched < strlen(tmp)) | |
| 3028 tmp[most_matched] = '\0'; | |
| 4359 | 3029 most_matched--; |
| 8021 | 3030 } |
| 8079 | 3031 most_matched++; |
| 8021 | 3032 |
| 3033 g_free(tmp); | |
| 4359 | 3034 } |
| 3035 | |
| 3036 matches = g_list_append(matches, nick); | |
| 3037 } | |
| 3038 | |
| 8021 | 3039 g_free(nick_partial); |
| 3040 | |
| 4359 | 3041 /* we're only here if we're doing new style */ |
| 3042 | |
| 3043 /* if there weren't any matches, return */ | |
| 3044 if (!matches) { | |
| 3045 /* if matches isn't set partials won't be either */ | |
| 3046 g_free(entered); | |
| 3047 return; | |
| 3048 } | |
| 3049 | |
| 3050 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor); | |
| 3051 | |
| 3052 if (!matches->next) { | |
| 3053 /* there was only one match. fill it in. */ | |
| 3054 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 3055 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 3056 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 3057 | |
| 3058 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
| 3059 char *tmp = g_strdup_printf("%s: ", (char *)matches->data); | |
| 3060 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1); | |
| 3061 g_free(tmp); | |
| 3062 } | |
| 3063 else | |
| 3064 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 3065 matches->data, -1); | |
| 3066 | |
| 3067 matches = g_list_remove(matches, matches->data); | |
| 3068 } | |
| 3069 else { | |
| 3070 /* | |
| 3071 * there were lots of matches, fill in as much as possible | |
| 3072 * and display all of them | |
| 3073 */ | |
| 3074 char *addthis = g_malloc0(1); | |
| 3075 | |
| 3076 while (matches) { | |
| 3077 char *tmp = addthis; | |
| 3078 addthis = g_strconcat(tmp, matches->data, " ", NULL); | |
| 3079 g_free(tmp); | |
| 3080 matches = g_list_remove(matches, matches->data); | |
| 3081 } | |
| 3082 | |
| 6982 | 3083 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG, |
| 4359 | 3084 time(NULL)); |
| 3085 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1); | |
| 3086 g_free(addthis); | |
| 3087 } | |
| 3088 | |
| 3089 g_free(entered); | |
| 3090 g_free(partial); | |
| 3091 } | |
| 3092 | |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3093 static void |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3094 save_convo(GtkWidget *save, GaimConversation *c) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3095 { |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3096 char buf[BUF_LONG]; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3097 GtkWidget *window; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3098 |
| 7859 | 3099 window = gtk_file_selection_new(_("Save Conversation")); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3100 |
| 8557 | 3101 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.html", |
| 7261 | 3102 gaim_home_dir(), gaim_normalize(c->account, c->name)); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3103 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3104 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
|
3105 "gaim_conversation", c); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3106 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
| 6038 | 3107 "clicked", G_CALLBACK(do_check_save_convo), window); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3108 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
|
3109 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3110 gtk_widget_show(window); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3111 } |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3112 |
| 4359 | 3113 static GtkItemFactoryEntry menu_items[] = |
| 3114 { | |
| 3115 /* Conversation menu */ | |
| 4596 | 3116 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3117 |
| 7887 | 3118 { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb, |
| 7859 | 3119 0, "<StockItem>", GAIM_STOCK_IM }, |
| 3120 | |
| 3121 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" }, | |
| 3122 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3123 { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3124 "<StockItem>", GTK_STOCK_FIND }, |
| 7859 | 3125 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL }, |
| 4596 | 3126 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, |
| 4359 | 3127 "<StockItem>", GTK_STOCK_SAVE_AS }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3128 |
| 4359 | 3129 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3130 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3131 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
|
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3132 0, NULL }, |
| 7859 | 3133 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3134 "<StockItem>", GAIM_STOCK_INFO }, |
| 7859 | 3135 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0, |
| 3136 "<StockItem>", GAIM_STOCK_WARN }, | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3137 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3138 "<StockItem>", GAIM_STOCK_INVITE }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3139 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3140 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3141 |
| 7859 | 3142 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0, |
| 3143 "<StockItem>", GAIM_STOCK_EDIT }, | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3144 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3145 "<StockItem>", GAIM_STOCK_BLOCK }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3146 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3147 "<StockItem>", GTK_STOCK_ADD }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3148 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3149 "<StockItem>", GTK_STOCK_REMOVE }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3150 |
| 7859 | 3151 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" }, |
| 3152 | |
| 8756 | 3153 { N_("/Conversation/Insert Lin_k..."), NULL, menu_insert_link_cb, 0, |
| 7859 | 3154 "<StockItem>", GAIM_STOCK_LINK }, |
|
8330
80915fd16349
[gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents:
8329
diff
changeset
|
3155 { N_("/Conversation/Insert Imag_e..."), NULL, NULL, 0, /* menu_insert_image_cb, 0, */ |
| 7859 | 3156 "<StockItem>", GAIM_STOCK_IMAGE }, |
| 3157 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3158 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3159 |
| 4596 | 3160 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, |
| 4359 | 3161 "<StockItem>", GTK_STOCK_CLOSE }, |
| 3162 | |
| 3163 /* Options */ | |
| 4596 | 3164 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, |
| 3165 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, | |
| 3166 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3167 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" }, |
| 4359 | 3168 }; |
| 3169 | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
3170 static const int menu_item_count = |
| 4359 | 3171 sizeof(menu_items) / sizeof(*menu_items); |
| 3172 | |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3173 static char * |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3174 item_factory_translate_func (const char *path, gpointer func_data) |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3175 { |
| 7386 | 3176 return _((char *)path); |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3177 } |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3178 |
| 4359 | 3179 static GtkWidget * |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3180 setup_menubar(GaimConvWindow *win) |
| 4359 | 3181 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3182 GaimGtkWindow *gtkwin; |
| 5116 | 3183 GtkAccelGroup *accel_group; |
| 4359 | 3184 gtkwin = GAIM_GTK_WINDOW(win); |
| 3185 | |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3186 accel_group = gtk_accel_group_new (); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3187 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3188 g_object_unref (accel_group); |
| 5116 | 3189 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3190 gtkwin->menu.item_factory = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3191 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3192 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3193 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3194 item_factory_translate_func, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3195 NULL, NULL); |
| 4630 | 3196 |
| 3197 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count, | |
| 4359 | 3198 menu_items, win); |
| 7420 | 3199 g_signal_connect(G_OBJECT(accel_group), "accel-changed", |
| 3200 G_CALLBACK(gaim_gtk_save_accels_cb), NULL); | |
| 4359 | 3201 |
|
5908
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 gtkwin->menu.menubar = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3204 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3205 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3206 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3207 gtkwin->menu.view_log = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3208 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
| 7295 | 3209 N_("/Conversation/View Log")); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3210 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3211 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3212 gtkwin->menu.add_pounce = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3213 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3214 N_("/Conversation/Add Buddy Pounce...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3215 |
| 7879 | 3216 /* --- */ |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3217 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3218 gtkwin->menu.get_info = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3219 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
| 7859 | 3220 N_("/Conversation/Get Info")); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3221 |
| 7879 | 3222 gtkwin->menu.warn = |
| 3223 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
| 3224 N_("/Conversation/Warn...")); | |
| 3225 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3226 gtkwin->menu.invite = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3227 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3228 N_("/Conversation/Invite...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3229 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3230 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3231 |
| 7879 | 3232 gtkwin->menu.alias = |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3233 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
| 7879 | 3234 N_("/Conversation/Alias...")); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3235 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3236 gtkwin->menu.block = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3237 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3238 N_("/Conversation/Block...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3239 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3240 gtkwin->menu.add = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3241 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3242 N_("/Conversation/Add...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3243 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3244 gtkwin->menu.remove = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3245 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3246 N_("/Conversation/Remove...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3247 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3248 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3249 |
| 7879 | 3250 gtkwin->menu.insert_link = |
| 3251 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
| 3252 N_("/Conversation/Insert Link...")); | |
| 3253 | |
| 3254 gtkwin->menu.insert_image = | |
| 3255 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
| 3256 N_("/Conversation/Insert Image...")); | |
| 3257 | |
| 3258 /* --- */ | |
| 3259 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3260 gtkwin->menu.logging = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3261 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3262 N_("/Options/Enable Logging")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3263 gtkwin->menu.sounds = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3264 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3265 N_("/Options/Enable Sounds")); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3266 gtkwin->menu.show_formatting_toolbar = |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3267 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3268 N_("/Options/Show Formatting Toolbar")); |
| 4359 | 3269 |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
3270 generate_send_as_items(win, NULL); |
| 4359 | 3271 |
| 3272 gtk_widget_show(gtkwin->menu.menubar); | |
| 4931 | 3273 |
| 3274 return gtkwin->menu.menubar; | |
| 4359 | 3275 } |
| 3276 | |
| 3277 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3278 setup_im_buttons(GaimConversation *conv, GtkWidget *parent) |
| 4359 | 3279 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3280 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3281 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3282 GaimGtkImPane *gtkim; |
| 8811 | 3283 GaimButtonStyle button_type; |
| 4359 | 3284 |
| 3285 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3286 gtkim = gtkconv->u.im; | |
| 3287 gc = gaim_conversation_get_gc(conv); | |
| 3288 | |
| 3289 /* From right to left... */ | |
| 3290 | |
| 3291 /* Send button */ | |
| 3292 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3293 GAIM_STOCK_SEND, GAIM_CONV_IM); |
| 4359 | 3294 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); |
| 3295 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
| 3296 | |
| 3297 /* Separator */ | |
| 3298 if (gtkim->sep2 != NULL) | |
| 3299 gtk_widget_destroy(gtkim->sep2); | |
| 3300 | |
| 3301 gtkim->sep2 = gtk_vseparator_new(); | |
| 3302 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0); | |
| 3303 gtk_widget_show(gtkim->sep2); | |
| 3304 | |
| 3305 /* Now, um, just kind of all over the place. Huh? */ | |
| 3306 | |
| 3307 /* Warn button */ | |
| 3308 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3309 GAIM_STOCK_WARN, GAIM_CONV_IM); |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3310 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn, |
|
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3311 _("Warn the user"), NULL); |
| 7929 | 3312 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0); |
| 3313 | |
| 3314 /* Block button */ | |
| 3315 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3316 GAIM_STOCK_BLOCK, GAIM_CONV_IM); |
| 7929 | 3317 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block, |
| 3318 _("Block the user"), NULL); | |
| 3319 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0); | |
| 3320 | |
| 3321 /* Add button */ | |
| 3322 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3323 GTK_STOCK_ADD, GAIM_CONV_IM); |
| 7929 | 3324 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add, |
| 3325 _("Add the user to your buddy list"), NULL); | |
| 3326 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0); | |
| 3327 | |
| 3328 /* Remove button */ | |
| 3329 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3330 GTK_STOCK_REMOVE, GAIM_CONV_IM); |
| 7929 | 3331 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove, |
| 3332 _("Remove the user from your buddy list"), NULL); | |
| 3333 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0); | |
| 4359 | 3334 |
| 3335 /* Info button */ | |
| 3336 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3337 GAIM_STOCK_INFO, GAIM_CONV_IM); |
| 4359 | 3338 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info, |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3339 _("Get the user's information"), NULL); |
| 7929 | 3340 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0); |
| 3341 | |
| 3342 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE); | |
| 3343 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE); | |
| 3344 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); | |
| 3345 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); | |
| 4359 | 3346 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE); |
| 3347 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); | |
| 7929 | 3348 |
| 3349 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn); | |
| 3350 gtk_size_group_add_widget(gtkconv->sg, gtkim->block); | |
| 3351 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); | |
| 3352 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); | |
| 4359 | 3353 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info); |
| 3354 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); | |
| 7929 | 3355 |
| 3356 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1); | |
| 3357 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2); | |
| 3358 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 3); | |
| 3359 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 4); | |
| 3360 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 5); | |
| 4359 | 3361 |
| 3362 gaim_gtkconv_update_buttons_by_protocol(conv); | |
| 3363 | |
| 8811 | 3364 /* Check if the buttons should be visible or not */ |
| 3365 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/im/button_type"); | |
| 3366 if (button_type == GAIM_BUTTON_NONE) | |
| 3367 gtk_widget_hide(gtkconv->bbox); | |
| 3368 else | |
| 3369 gtk_widget_show(gtkconv->bbox); | |
| 3370 | |
| 4359 | 3371 g_signal_connect(G_OBJECT(gtkim->warn), "clicked", |
| 3372 G_CALLBACK(warn_cb), conv); | |
| 3373 g_signal_connect(G_OBJECT(gtkim->block), "clicked", | |
| 3374 G_CALLBACK(block_cb), conv); | |
| 7929 | 3375 g_signal_connect(G_OBJECT(gtkconv->add), "clicked", |
| 3376 G_CALLBACK(add_remove_cb), conv); | |
| 3377 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", | |
| 3378 G_CALLBACK(add_remove_cb), conv); | |
| 3379 g_signal_connect(G_OBJECT(gtkconv->info), "clicked", | |
| 3380 G_CALLBACK(info_cb), conv); | |
| 3381 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", | |
| 3382 G_CALLBACK(send_cb), conv); | |
| 4359 | 3383 } |
| 3384 | |
| 3385 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3386 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent) |
| 4359 | 3387 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3388 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3389 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3390 GaimGtkChatPane *gtkchat; |
| 8811 | 3391 GaimButtonStyle button_type; |
| 4359 | 3392 |
| 3393 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3394 gtkchat = gtkconv->u.chat; | |
| 3395 gc = gaim_conversation_get_gc(conv); | |
| 3396 | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3397 /* From right to left... */ |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3398 |
| 4359 | 3399 /* Send button */ |
| 3400 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
| 3401 GAIM_STOCK_SEND, GAIM_CONV_CHAT); | |
| 3402 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); | |
| 3403 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
| 3404 | |
| 3405 /* Separator */ | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3406 if (gtkchat->sep != NULL) |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3407 gtk_widget_destroy(gtkchat->sep); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3408 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3409 gtkchat->sep = gtk_vseparator_new(); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3410 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
|
3411 gtk_widget_show(gtkchat->sep); |
| 4359 | 3412 |
| 3413 /* Invite */ | |
| 3414 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite, | |
| 3415 GAIM_STOCK_INVITE, GAIM_CONV_CHAT); | |
| 3416 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite, | |
| 3417 _("Invite a user"), NULL); | |
| 7931 | 3418 gtk_box_pack_start(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0); |
| 4359 | 3419 |
| 7929 | 3420 /* Add button */ |
| 3421 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, | |
| 3422 GTK_STOCK_ADD, GAIM_CONV_CHAT); | |
| 3423 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add, | |
| 3424 _("Add the chat to your buddy list"), NULL); | |
| 3425 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0); | |
| 3426 | |
| 3427 /* Remove button */ | |
| 3428 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove, | |
| 3429 GTK_STOCK_REMOVE, GAIM_CONV_CHAT); | |
| 3430 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove, | |
| 3431 _("Remove the chat from your buddy list"), NULL); | |
| 3432 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0); | |
| 3433 | |
| 4359 | 3434 /* Set the relief on these. */ |
| 3435 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE); | |
| 7929 | 3436 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); |
| 3437 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); | |
| 4359 | 3438 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); |
| 3439 | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3440 gtk_size_group_add_widget(gtkconv->sg, gtkchat->invite); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3441 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3442 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3443 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3444 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3445 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 1); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3446 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 3); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3447 gtk_box_reorder_child(GTK_BOX(parent), gtkchat->invite, 3); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3448 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3449 gaim_gtkconv_update_buttons_by_protocol(conv); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3450 |
| 8811 | 3451 /* Check if the buttons should be visible or not */ |
| 3452 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/chat/button_type"); | |
| 3453 if (button_type == GAIM_BUTTON_NONE) | |
| 3454 gtk_widget_hide(gtkconv->bbox); | |
| 3455 else | |
| 3456 gtk_widget_show(gtkconv->bbox); | |
| 3457 | |
| 4359 | 3458 /* Callbacks */ |
| 7929 | 3459 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked", |
| 3460 G_CALLBACK(invite_cb), conv); | |
| 3461 g_signal_connect(G_OBJECT(gtkconv->add), "clicked", | |
| 3462 G_CALLBACK(add_remove_cb), conv); | |
| 3463 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", | |
| 3464 G_CALLBACK(add_remove_cb), conv); | |
| 4359 | 3465 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", |
| 3466 G_CALLBACK(send_cb), conv); | |
| 3467 } | |
| 3468 | |
| 3469 | |
| 7971 | 3470 static void topic_callback(GtkWidget *w, GaimConversation *conv) |
| 3471 { | |
| 3472 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 3473 GaimConnection *gc; | |
| 3474 GaimGtkConversation *gtkconv; | |
| 3475 GaimGtkChatPane *gtkchat; | |
| 8858 | 3476 const char *new_topic; |
| 3477 const char *current_topic; | |
| 7971 | 3478 |
| 3479 gc = gaim_conversation_get_gc(conv); | |
| 3480 | |
| 3481 if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl))) | |
| 3482 return; | |
| 3483 | |
| 3484 if(prpl_info->set_chat_topic == NULL) | |
| 3485 return; | |
| 3486 | |
| 3487 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3488 gtkchat = gtkconv->u.chat; | |
| 8858 | 3489 new_topic = gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text)); |
| 3490 current_topic = gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv)); | |
| 3491 | |
| 3492 if(current_topic && !g_utf8_collate(new_topic, current_topic)) | |
| 7971 | 3493 return; |
| 3494 | |
| 8858 | 3495 prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), |
| 3496 new_topic); | |
| 7971 | 3497 } |
| 3498 | |
| 4359 | 3499 static GtkWidget * |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3500 setup_chat_pane(GaimConversation *conv) |
| 4359 | 3501 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3502 GaimPluginProtocolInfo *prpl_info = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3503 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3504 GaimGtkChatPane *gtkchat; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3505 GaimConnection *gc; |
| 8456 | 3506 GaimPlugin *protocol; |
| 4359 | 3507 GtkWidget *vpaned, *hpaned; |
| 3508 GtkWidget *vbox, *hbox; | |
| 3509 GtkWidget *lbox, *bbox; | |
| 3510 GtkWidget *label; | |
| 3511 GtkWidget *list; | |
| 3512 GtkWidget *button; | |
| 7949 | 3513 GtkWidget *sw; |
| 4359 | 3514 GtkListStore *ls; |
| 3515 GtkCellRenderer *rend; | |
| 3516 GtkTreeViewColumn *col; | |
| 8143 | 3517 GList *focus_chain; |
| 4359 | 3518 |
| 3519 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3520 gtkchat = gtkconv->u.chat; | |
| 3521 gc = gaim_conversation_get_gc(conv); | |
| 3522 | |
| 3523 /* Setup the outer pane. */ | |
| 3524 vpaned = gtk_vpaned_new(); | |
| 3525 gtk_widget_show(vpaned); | |
| 3526 | |
| 3527 /* Setup the top part of the pane. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3528 vbox = gtk_vbox_new(FALSE, 6); |
| 8914 | 3529 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, TRUE); |
| 4359 | 3530 gtk_widget_show(vbox); |
| 3531 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3532 if (gc != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3533 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3534 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3535 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC) |
| 4359 | 3536 { |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3537 hbox = gtk_hbox_new(FALSE, 6); |
|
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3538 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 4359 | 3539 gtk_widget_show(hbox); |
| 3540 | |
| 3541 label = gtk_label_new(_("Topic:")); | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3542 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 4359 | 3543 gtk_widget_show(label); |
| 3544 | |
| 3545 gtkchat->topic_text = gtk_entry_new(); | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3546 |
| 7971 | 3547 if(prpl_info->set_chat_topic == NULL) { |
| 3548 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE); | |
| 3549 } else { | |
| 3550 g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate", | |
| 3551 G_CALLBACK(topic_callback), conv); | |
| 3552 } | |
| 3553 | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3554 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0); |
| 4359 | 3555 gtk_widget_show(gtkchat->topic_text); |
| 3556 } | |
| 3557 | |
| 3558 /* Setup the horizontal pane. */ | |
| 3559 hpaned = gtk_hpaned_new(); | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3560 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); |
| 4359 | 3561 gtk_widget_show(hpaned); |
| 3562 | |
| 3563 /* Setup the scrolled window to put gtkimhtml in. */ | |
| 3564 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
| 3565 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 8076 | 3566 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
| 4359 | 3567 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), |
| 3568 GTK_SHADOW_IN); | |
| 3569 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE); | |
| 3570 | |
| 3571 gtk_widget_set_size_request(gtkconv->sw, | |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3572 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3573 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3574 |
| 8914 | 3575 g_signal_connect(G_OBJECT(gtkconv->sw), "size-allocate", |
| 3576 G_CALLBACK(size_allocate_cb), conv); | |
| 3577 | |
| 4359 | 3578 gtk_widget_show(gtkconv->sw); |
| 3579 | |
| 3580 /* Setup gtkihmtml. */ | |
| 3581 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
| 8829 | 3582 gtk_widget_set_name(gtkconv->imhtml, "gtkconv_imhtml"); |
| 4359 | 3583 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); |
| 3584 | |
| 3585 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3586 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 4359 | 3587 |
| 3588 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 3589 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 8105 | 3590 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
| 6057 | 3591 G_CALLBACK(refocus_entry_cb), gtkconv); |
| 8109 | 3592 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
| 3593 G_CALLBACK(refocus_entry_cb), gtkconv); | |
| 4359 | 3594 |
| 3595 gaim_setup_imhtml(gtkconv->imhtml); | |
| 3596 | |
| 3597 gtk_widget_show(gtkconv->imhtml); | |
| 3598 | |
| 3599 /* Build the right pane. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3600 lbox = gtk_vbox_new(FALSE, 6); |
|
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3601 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); |
| 4359 | 3602 gtk_widget_show(lbox); |
| 3603 | |
| 3604 /* Setup the label telling how many people are in the room. */ | |
| 3605 gtkchat->count = gtk_label_new(_("0 people in room")); | |
| 3606 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0); | |
| 3607 gtk_widget_show(gtkchat->count); | |
| 3608 | |
| 3609 /* Setup the list of users. */ | |
| 7949 | 3610 sw = gtk_scrolled_window_new(NULL, NULL); |
| 3611 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
| 8076 | 3612 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
| 7949 | 3613 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
| 3614 gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0); | |
| 3615 gtk_widget_show(sw); | |
| 4359 | 3616 |
| 3617 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
| 3618 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
| 3619 GTK_SORT_ASCENDING); | |
| 3620 | |
| 3621 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls)); | |
| 3622 | |
| 3623 rend = gtk_cell_renderer_text_new(); | |
| 3624 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 3625 "text", 0, NULL); | |
| 3626 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
| 3627 | |
| 3628 g_signal_connect(G_OBJECT(list), "button_press_event", | |
| 3629 G_CALLBACK(right_click_chat_cb), conv); | |
| 8143 | 3630 g_signal_connect(G_OBJECT(list), "popup-menu", |
| 3631 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv); | |
| 4359 | 3632 |
| 3633 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3634 | |
| 3635 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 3636 "text", 1, NULL); | |
| 3637 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
| 3638 | |
| 3639 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3640 | |
| 3641 gtk_widget_set_size_request(list, 150, -1); | |
| 3642 | |
| 3643 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE); | |
| 3644 gtk_widget_show(list); | |
| 3645 | |
| 3646 gtkchat->list = list; | |
| 3647 | |
| 7949 | 3648 gtk_container_add(GTK_CONTAINER(sw), list); |
| 4359 | 3649 |
| 3650 /* Setup the user list toolbar. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3651 bbox = gtk_hbox_new(TRUE, 6); |
| 4359 | 3652 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0); |
| 3653 gtk_widget_show(bbox); | |
| 3654 | |
| 3655 /* IM */ | |
| 3656 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO, | |
| 3657 GAIM_BUTTON_VERTICAL); | |
| 3658 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3659 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
|
3660 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL); |
| 4359 | 3661 g_signal_connect(G_OBJECT(button), "clicked", |
| 7961 | 3662 G_CALLBACK(chat_im_button_cb), conv); |
| 4359 | 3663 |
| 3664 gtk_widget_show(button); | |
| 3665 | |
| 3666 /* Ignore */ | |
| 3667 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE, | |
| 3668 GAIM_BUTTON_VERTICAL); | |
| 3669 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3670 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
|
3671 gtk_tooltips_set_tip(gtkconv->tooltips, button, |
|
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3672 _("Ignore the user"), NULL); |
| 4359 | 3673 g_signal_connect(G_OBJECT(button), "clicked", |
| 3674 G_CALLBACK(ignore_cb), conv); | |
| 3675 gtk_widget_show(button); | |
| 3676 | |
| 3677 /* Info */ | |
| 3678 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO, | |
| 3679 GAIM_BUTTON_VERTICAL); | |
| 3680 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3681 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 3682 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3683 _("Get the user's information"), NULL); |
| 4359 | 3684 g_signal_connect(G_OBJECT(button), "clicked", |
| 3685 G_CALLBACK(info_cb), conv); | |
| 3686 | |
| 3687 gtk_widget_show(button); | |
| 3688 | |
| 3689 gtkconv->info = button; | |
| 3690 | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3691 /* Build the toolbar. */ |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3692 vbox = gtk_vbox_new(FALSE, 6); |
| 8914 | 3693 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, TRUE); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3694 gtk_widget_show(vbox); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3695 |
| 8317 | 3696 gtkconv->toolbar = gtk_imhtmltoolbar_new(); |
| 3697 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar, FALSE, FALSE, 0); | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3698 |
| 8123 | 3699 /* Setup the entry widget. |
| 3700 * We never show the horizontal scrollbar because it was causing weird | |
| 3701 * lockups when typing text just as you type the character that would | |
| 3702 * cause both scrollbars to appear. Definitely seems like a gtk bug. | |
| 3703 */ | |
| 8821 | 3704 gtkconv->entrybox = gtk_hbox_new(FALSE, 6); |
| 3705 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->entrybox, TRUE, TRUE, 0); | |
| 3706 gtk_widget_show(gtkconv->entrybox); | |
| 3707 | |
| 7949 | 3708 sw = gtk_scrolled_window_new(NULL, NULL); |
| 3709 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
| 8112 | 3710 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
| 8061 | 3711 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
| 3712 GTK_SHADOW_IN); | |
| 8821 | 3713 gtk_box_pack_start(GTK_BOX(gtkconv->entrybox), sw, TRUE, TRUE, 0); |
| 7949 | 3714 gtk_widget_show(sw); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3715 |
| 8061 | 3716 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
| 8829 | 3717 gtk_widget_set_name(gtkconv->entry, "gtkconv_entry"); |
| 8456 | 3718 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry), |
| 3719 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")); | |
| 3720 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 3721 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")); | |
| 3722 | |
| 3723 protocol = gaim_find_prpl(conv->account->protocol_id); | |
| 3724 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), | |
| 3725 protocol->info->name); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3726 gtkconv->entry_buffer = |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3727 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
| 8061 | 3728 gaim_setup_imhtml(gtkconv->entry); |
| 3729 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
| 3730 default_formatize(conv); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3731 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3732 GTK_WRAP_WORD_CHAR); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3733 gtk_widget_set_size_request(gtkconv->entry, -1, |
| 8106 | 3734 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height")); |
| 7949 | 3735 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
| 3736 | |
| 3737 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | |
| 8105 | 3738 G_CALLBACK(entry_key_press_cb), conv); |
| 4359 | 3739 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
| 3740 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 8914 | 3741 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate", |
| 3742 G_CALLBACK(size_allocate_cb), conv); | |
| 4359 | 3743 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3744 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3745 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3746 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3747 gtkconv->entry); |
| 4359 | 3748 |
| 7949 | 3749 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); |
| 4359 | 3750 gtk_widget_show(gtkconv->entry); |
| 3751 | |
| 3752 /* Setup the bottom button box. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3753 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
| 4359 | 3754 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0); |
| 3755 gtk_widget_show(gtkconv->bbox); | |
| 3756 | |
| 3757 setup_chat_buttons(conv, gtkconv->bbox); | |
| 3758 | |
| 8143 | 3759 focus_chain = g_list_prepend (NULL, sw); |
| 3760 gtk_container_set_focus_chain (GTK_CONTAINER(vbox), focus_chain); | |
| 4359 | 3761 return vpaned; |
| 3762 } | |
| 3763 | |
| 3764 static GtkWidget * | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3765 setup_im_pane(GaimConversation *conv) |
| 4359 | 3766 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3767 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3768 GaimGtkImPane *gtkim; |
| 8456 | 3769 GaimPlugin *protocol; |
| 4359 | 3770 GtkWidget *paned; |
| 3771 GtkWidget *vbox; | |
| 3772 GtkWidget *vbox2; | |
| 7949 | 3773 GtkWidget *sw; |
| 8143 | 3774 GList *focus_chain; |
| 4359 | 3775 |
| 3776 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3777 gtkim = gtkconv->u.im; | |
| 3778 | |
| 3779 /* Setup the outer pane. */ | |
| 3780 paned = gtk_vpaned_new(); | |
| 3781 gtk_widget_show(paned); | |
| 3782 | |
| 3783 /* Setup the top part of the pane. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3784 vbox = gtk_vbox_new(FALSE, 6); |
|
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3785 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
| 4359 | 3786 gtk_widget_show(vbox); |
| 3787 | |
| 3788 /* Setup the gtkimhtml widget. */ | |
| 3789 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
| 3790 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 8076 | 3791 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
| 4359 | 3792 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), |
| 3793 GTK_SHADOW_IN); | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3794 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0); |
| 4851 | 3795 |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3796 gtk_widget_set_size_request(gtkconv->sw, |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3797 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3798 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); |
| 8914 | 3799 g_signal_connect(G_OBJECT(gtkconv->sw), "size-allocate", |
| 3800 G_CALLBACK(size_allocate_cb), conv); | |
| 4359 | 3801 gtk_widget_show(gtkconv->sw); |
| 3802 | |
| 3803 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
| 8829 | 3804 gtk_widget_set_name(gtkconv->imhtml, "gtkconv_imhtml"); |
| 4359 | 3805 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); |
| 3806 | |
| 3807 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 3808 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 8105 | 3809 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
| 6057 | 3810 G_CALLBACK(refocus_entry_cb), gtkconv); |
| 8109 | 3811 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
| 3812 G_CALLBACK(refocus_entry_cb), gtkconv); | |
| 4359 | 3813 |
| 3814 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3815 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 4359 | 3816 |
| 3817 gaim_setup_imhtml(gtkconv->imhtml); | |
| 3818 gtk_widget_show(gtkconv->imhtml); | |
| 3819 | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3820 vbox2 = gtk_vbox_new(FALSE, 6); |
| 8914 | 3821 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, TRUE); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3822 gtk_widget_show(vbox2); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3823 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3824 /* Build the toolbar. */ |
| 8317 | 3825 gtkconv->toolbar = gtk_imhtmltoolbar_new(); |
| 3826 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar, FALSE, FALSE, 0); | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3827 |
| 8123 | 3828 /* Setup the entry widget. |
| 3829 * We never show the horizontal scrollbar because it was causing weird | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3830 * lockups when typing text just as you type the character that would |
| 8123 | 3831 * cause both scrollbars to appear. Definitely seems like a gtk bug. |
| 3832 */ | |
| 8821 | 3833 gtkconv->entrybox = gtk_hbox_new(FALSE, 6); |
| 3834 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->entrybox, TRUE, TRUE, 0); | |
| 3835 gtk_widget_show(gtkconv->entrybox); | |
| 3836 | |
| 7949 | 3837 sw = gtk_scrolled_window_new(NULL, NULL); |
| 3838 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
| 8112 | 3839 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
| 8061 | 3840 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
| 3841 GTK_SHADOW_IN); | |
| 8821 | 3842 gtk_box_pack_start(GTK_BOX(gtkconv->entrybox), sw, TRUE, TRUE, 0); |
| 7949 | 3843 gtk_widget_show(sw); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3844 |
| 8061 | 3845 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
| 8829 | 3846 gtk_widget_set_name(gtkconv->entry, "gtkconv_entry"); |
| 8456 | 3847 |
| 3848 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 3849 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")); | |
| 3850 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 3851 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")); | |
| 3852 | |
| 3853 protocol = gaim_find_prpl(conv->account->protocol_id); | |
| 3854 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), | |
| 3855 protocol->info->name); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3856 gtkconv->entry_buffer = |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3857 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
| 8061 | 3858 gaim_setup_imhtml(gtkconv->entry); |
| 3859 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3860 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3861 GTK_WRAP_WORD_CHAR); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3862 gtk_widget_set_size_request(gtkconv->entry, -1, |
| 8106 | 3863 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height")); |
| 7949 | 3864 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
|
3865 |
| 4359 | 3866 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", |
| 8105 | 3867 G_CALLBACK(entry_key_press_cb), conv); |
| 4359 | 3868 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
| 3869 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 8914 | 3870 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate", |
| 3871 G_CALLBACK(size_allocate_cb), conv); | |
| 4359 | 3872 |
| 3873 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", | |
| 3874 G_CALLBACK(insert_text_cb), conv); | |
| 3875 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", | |
| 3876 G_CALLBACK(delete_text_cb), conv); | |
| 3877 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3878 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3879 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
| 4359 | 3880 |
| 7949 | 3881 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); |
| 4359 | 3882 gtk_widget_show(gtkconv->entry); |
|
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
3883 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), |
|
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
3884 gtkconv->entry); |
| 8481 | 3885 /* had to move this after the imtoolbar is attached so that the |
| 3886 * signals get fired to toggle the buttons on the toolbar as well. | |
| 3887 */ | |
| 3888 default_formatize(conv); | |
| 4359 | 3889 |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3890 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
| 4359 | 3891 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0); |
| 3892 gtk_widget_show(gtkconv->bbox); | |
| 3893 | |
| 3894 setup_im_buttons(conv, gtkconv->bbox); | |
| 8758 | 3895 gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons"); |
| 4359 | 3896 |
| 8143 | 3897 focus_chain = g_list_prepend (NULL, sw); |
| 3898 gtk_container_set_focus_chain (GTK_CONTAINER(vbox2), focus_chain); | |
| 3899 | |
| 4359 | 3900 return paned; |
| 3901 } | |
| 3902 | |
| 3903 static void | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3904 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
|
3905 GtkSelectionData *sd, guint info, guint t, |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3906 GaimConversation *conv) |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3907 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3908 GaimConvWindow *win = conv->window; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3909 GaimConversation *c; |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3910 |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3911 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3912 { |
| 4781 | 3913 GaimBlistNode *n = NULL; |
| 6695 | 3914 GaimBuddy *b; |
| 4781 | 3915 memcpy(&n, sd->data, sizeof(n)); |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3916 |
| 6695 | 3917 if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
| 3918 b = gaim_contact_get_priority_buddy((GaimContact*)n); | |
| 3919 else if (GAIM_BLIST_NODE_IS_BUDDY(n)) | |
| 3920 b = (GaimBuddy*)n; | |
| 3921 else | |
| 4781 | 3922 return; |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3923 |
|
7089
2cd3756a637b
[gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
3924 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
|
3925 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3926 gaim_conv_window_add_conversation(win, c); |
|
8802
1076cd8579ea
[gaim-migrate @ 9564]
Christian Hammond <chipx86@chipx86.com>
parents:
8758
diff
changeset
|
3927 |
|
1076cd8579ea
[gaim-migrate @ 9564]
Christian Hammond <chipx86@chipx86.com>
parents:
8758
diff
changeset
|
3928 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
| 4702 | 3929 } |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3930 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
|
3931 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3932 char *protocol = NULL; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3933 char *username = NULL; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3934 GaimAccount *account; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3935 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3936 if (gaim_gtk_parse_x_im_contact(sd->data, FALSE, &account, |
| 7718 | 3937 &protocol, &username, NULL)) |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3938 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3939 if (account == NULL) |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3940 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3941 gaim_notify_error(NULL, NULL, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3942 _("You are not currently signed on with an account that " |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3943 "can add that buddy."), NULL); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3944 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3945 else |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3946 { |
| 7718 | 3947 c = gaim_conversation_new(GAIM_CONV_IM, account, username); |
| 3948 gaim_conv_window_add_conversation(win, c); | |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3949 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3950 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3951 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3952 if (username != NULL) g_free(username); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3953 if (protocol != NULL) g_free(protocol); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3954 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3955 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3956 } |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3957 } |
| 4359 | 3958 |
| 3959 /************************************************************************** | |
| 3960 * GTK+ window ops | |
| 3961 **************************************************************************/ | |
| 3962 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3963 gaim_gtk_new_window(GaimConvWindow *win) |
| 4359 | 3964 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3965 GaimGtkWindow *gtkwin; |
| 4359 | 3966 GtkPositionType pos; |
| 3967 GtkWidget *testidea; | |
| 3968 GtkWidget *menubar; | |
| 3969 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3970 gtkwin = g_malloc0(sizeof(GaimGtkWindow)); |
| 4359 | 3971 |
| 3972 win->ui_data = gtkwin; | |
| 3973 | |
| 3974 /* Create the window. */ | |
| 3975 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 3976 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation"); | |
| 4635 | 3977 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE); |
|
4510
4c394222c732
[gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents:
4505
diff
changeset
|
3978 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0); |
| 5173 | 3979 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE; |
| 4359 | 3980 gtk_widget_realize(gtkwin->window); |
| 3981 | |
| 3982 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event", | |
| 3983 G_CALLBACK(close_win_cb), win); | |
| 3984 | |
| 3985 /* Create the notebook. */ | |
| 3986 gtkwin->notebook = gtk_notebook_new(); | |
| 3987 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3988 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side"); |
| 4359 | 3989 |
| 3990 #if 0 | |
| 3991 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
| 3992 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
| 3993 #endif | |
| 3994 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); | |
| 3995 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE); | |
| 3996 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook)); | |
| 4818 | 3997 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE); |
| 3998 | |
| 4359 | 3999 gtk_widget_show(gtkwin->notebook); |
| 4000 | |
| 8189 | 4001 g_signal_connect(G_OBJECT(gtkwin->notebook), "switch_page", |
| 4002 G_CALLBACK(before_switch_conv_cb), win); | |
| 4359 | 4003 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page", |
| 4004 G_CALLBACK(switch_conv_cb), win); | |
| 4005 | |
| 4006 /* Setup the tab drag and drop signals. */ | |
| 4486 | 4007 gtk_widget_add_events(gtkwin->notebook, |
| 4008 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); | |
| 4009 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event", | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4010 G_CALLBACK(notebook_press_cb), win); |
| 4486 | 4011 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event", |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4012 G_CALLBACK(notebook_release_cb), win); |
|
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4013 |
| 4359 | 4014 testidea = gtk_vbox_new(FALSE, 0); |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4015 |
| 4359 | 4016 /* Setup the menubar. */ |
| 4017 menubar = setup_menubar(win); | |
| 4018 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0); | |
| 4019 | |
| 4020 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0); | |
| 4021 | |
| 4022 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea); | |
| 4023 | |
| 4024 gtk_widget_show(testidea); | |
| 4025 } | |
| 4026 | |
| 4027 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4028 gaim_gtk_destroy_window(GaimConvWindow *win) |
| 4359 | 4029 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4030 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4031 |
| 4032 gtk_widget_destroy(gtkwin->window); | |
| 4033 | |
| 4630 | 4034 g_object_unref(G_OBJECT(gtkwin->menu.item_factory)); |
| 4035 | |
| 4359 | 4036 g_free(gtkwin); |
| 4037 win->ui_data = NULL; | |
| 4038 } | |
| 4039 | |
| 4040 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4041 gaim_gtk_show(GaimConvWindow *win) |
| 4359 | 4042 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4043 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4044 |
| 4045 gtk_widget_show(gtkwin->window); | |
| 7413 | 4046 |
| 4047 #ifdef _WIN32 | |
| 7415 | 4048 /* This works around a win32 gtk+ bug, where it can't handle |
| 4049 * creating the button correctly before the window is shown. | |
| 4050 * That's why we get the appearance of a button, without all | |
| 4051 * the normal button-like properties, like being able to click | |
| 7413 | 4052 * it. ;-) --Nathan */ |
| 7414 | 4053 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) { |
| 4054 GaimConversation *conv; | |
| 4055 GaimGtkConversation *gtkconv; | |
| 4056 | |
| 4057 conv = gaim_conv_window_get_conversation_at(win, 0); | |
| 4058 if(conv) { | |
| 4059 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7415 | 4060 gtk_widget_hide(gtkconv->close); |
| 7414 | 4061 gtk_widget_show_all(gtkconv->close); |
| 4062 } | |
| 4063 } | |
| 7413 | 4064 #endif |
| 4359 | 4065 } |
| 4066 | |
| 4067 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4068 gaim_gtk_hide(GaimConvWindow *win) |
| 4359 | 4069 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4070 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4071 |
| 4072 gtk_widget_hide(gtkwin->window); | |
| 4073 } | |
| 4074 | |
| 4075 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4076 gaim_gtk_raise(GaimConvWindow *win) |
| 4359 | 4077 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4078 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4079 |
| 5484 | 4080 gtk_widget_show(gtkwin->window); |
| 5103 | 4081 gtk_window_deiconify(GTK_WINDOW(gtkwin->window)); |
| 4526 | 4082 gdk_window_raise(gtkwin->window->window); |
| 4359 | 4083 } |
| 4084 | |
| 4085 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4086 gaim_gtk_flash(GaimConvWindow *win) |
| 4359 | 4087 { |
| 4088 #ifdef _WIN32 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4089 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4090 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4091 wgaim_conv_im_blink(gtkwin->window); |
| 4359 | 4092 #endif |
| 4093 } | |
| 4094 | |
| 4095 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4096 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index) |
| 4359 | 4097 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4098 GaimGtkWindow *gtkwin; |
| 4359 | 4099 |
| 4100 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4101 | |
| 4102 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
| 4103 } | |
| 4104 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4105 static const GtkTargetEntry te[] = |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4106 { |
| 7695 | 4107 {"text/plain", 0, 0}, |
| 4108 {"text/uri-list", 0, 1}, | |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4109 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 2}, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4110 {"STRING", 0, 3}, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4111 {"application/x-im-contact", 0, 4} |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4112 }; |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4113 |
| 4359 | 4114 static void |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4115 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv) |
| 4359 | 4116 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4117 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4118 GaimGtkConversation *gtkconv, *focus_gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4119 GaimConversation *focus_conv; |
| 4359 | 4120 GtkWidget *pane = NULL; |
| 4121 GtkWidget *tab_cont; | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4122 GtkWidget *tabby, *menu_tabby; |
| 4359 | 4123 gboolean new_ui; |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4124 GaimConversationType conv_type; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4125 const char *name; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4126 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4127 name = gaim_conversation_get_name(conv); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4128 conv_type = gaim_conversation_get_type(conv); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4129 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4130 |
| 4131 if (conv->ui_data != NULL) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4132 gtkconv = (GaimGtkConversation *)conv->ui_data; |
| 4359 | 4133 |
| 4134 tab_cont = gtkconv->tab_cont; | |
| 4135 | |
| 4136 new_ui = FALSE; | |
| 4137 } | |
| 4138 else { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4139 gtkconv = g_malloc0(sizeof(GaimGtkConversation)); |
| 4359 | 4140 conv->ui_data = gtkconv; |
| 4141 | |
| 4142 /* Setup some initial variables. */ | |
| 4143 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
| 4144 gtkconv->tooltips = gtk_tooltips_new(); | |
| 4145 | |
| 4421 | 4146 /* Setup the foreground and background colors */ |
| 4147 gaim_gtkconv_update_font_colors(conv); | |
| 4148 | |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4149 /* Setup the font face */ |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4150 gaim_gtkconv_update_font_face(conv); |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4151 |
| 7879 | 4152 if (conv_type == GAIM_CONV_IM) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4153 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane)); |
| 4359 | 4154 gtkconv->u.im->a_virgin = TRUE; |
| 4155 | |
| 4156 pane = setup_im_pane(conv); | |
| 4157 } | |
| 7879 | 4158 else if (conv_type == GAIM_CONV_CHAT) { |
| 4159 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane)); | |
| 4160 | |
| 4161 pane = setup_chat_pane(conv); | |
| 4162 } | |
| 4359 | 4163 |
| 4164 if (pane == NULL) { | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4165 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat); |
|
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4166 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im); |
| 4359 | 4167 |
| 4168 g_free(gtkconv); | |
| 4169 conv->ui_data = NULL; | |
| 4170 | |
| 4171 return; | |
| 4172 } | |
| 4173 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4174 /* Setup drag-and-drop */ |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4175 gtk_drag_dest_set(pane, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4176 GTK_DEST_DEFAULT_MOTION | |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4177 GTK_DEST_DEFAULT_DROP, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4178 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4179 GDK_ACTION_COPY); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4180 gtk_drag_dest_set(gtkconv->imhtml, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4181 GTK_DEST_DEFAULT_MOTION | |
| 4702 | 4182 GTK_DEST_DEFAULT_DROP, |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4183 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4184 GDK_ACTION_DEFAULT | GDK_ACTION_COPY | |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4185 GDK_ACTION_MOVE); |
| 7695 | 4186 gtk_drag_dest_set(gtkconv->entry, |
| 4187 GTK_DEST_DEFAULT_MOTION | | |
| 4188 GTK_DEST_DEFAULT_DROP, | |
| 4189 te, sizeof(te) / sizeof(GtkTargetEntry), | |
| 4190 GDK_ACTION_COPY); | |
| 4191 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4192 g_signal_connect(G_OBJECT(pane), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4193 G_CALLBACK(conv_dnd_recv), conv); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4194 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4195 G_CALLBACK(conv_dnd_recv), conv); |
| 8105 | 4196 #if 0 |
| 4197 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", | |
| 4198 G_CALLBACK(conv_dnd_recv), conv); | |
| 4199 #endif | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4200 |
| 4359 | 4201 /* Setup the container for the tab. */ |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4202 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 6); |
|
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4203 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 6); |
| 4359 | 4204 gtk_container_add(GTK_CONTAINER(tab_cont), pane); |
| 4205 gtk_widget_show(pane); | |
| 4206 | |
| 4207 new_ui = TRUE; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4208 |
| 4359 | 4209 gtkconv->make_sound = TRUE; |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
4210 |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4211 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4212 "/gaim/gtk/conversations/show_formatting_toolbar"); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4213 |
|
8329
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4214 if (gtkconv->show_formatting_toolbar) |
|
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4215 gtk_widget_show(gtkconv->toolbar); |
|
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4216 |
| 8176 | 4217 g_signal_connect_swapped(G_OBJECT(pane), "focus", |
| 4218 G_CALLBACK(gtk_widget_grab_focus), | |
| 4219 gtkconv->entry); | |
| 4359 | 4220 } |
| 4221 | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4222 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 6); |
|
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4223 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 6); |
| 4359 | 4224 |
| 4225 /* Close button. */ | |
| 4226 gtkconv->close = gtk_button_new(); | |
| 4227 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
|
4228 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE); |
| 4359 | 4229 gtk_container_add(GTK_CONTAINER(gtkconv->close), |
| 4445 | 4230 gtk_image_new_from_stock(GTK_STOCK_CLOSE, |
| 4231 GTK_ICON_SIZE_MENU)); | |
| 4359 | 4232 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4233 _("Close conversation"), NULL); |
| 4359 | 4234 |
| 4235 g_signal_connect(G_OBJECT(gtkconv->close), "clicked", | |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4236 G_CALLBACK(close_conv_cb), conv); |
| 4359 | 4237 |
|
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4238 /* |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4239 * 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
|
4240 * border bug. I love you guys! -- ChipX86 |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4241 */ |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4242 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed", |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4243 G_CALLBACK(tab_close_button_state_changed_cb), NULL); |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4244 |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4245 /* Status icon. */ |
| 6440 | 4246 gtkconv->icon = gtk_image_new(); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4247 gtkconv->menu_icon = gtk_image_new(); |
| 6440 | 4248 update_tab_icon(conv); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4249 |
| 4359 | 4250 /* Tab label. */ |
| 4251 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
|
4252 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); |
| 4359 | 4253 #if 0 |
| 4254 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); | |
| 4255 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); | |
| 4256 #endif | |
| 4257 | |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
4258 |
| 4359 | 4259 /* Pack it all together. */ |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4260 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4261 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4262 FALSE, FALSE, 0); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4263 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4264 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4265 { |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4266 gtk_widget_show_all(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4267 gtk_widget_show_all(gtkconv->menu_icon); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4268 } |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4269 |
| 4359 | 4270 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
|
4271 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); |
| 4445 | 4272 gtk_widget_show(gtkconv->tab_label); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4273 gtk_widget_show(gtkconv->menu_label); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4274 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
|
4275 |
| 4445 | 4276 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
|
4277 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) |
| 4445 | 4278 gtk_widget_show_all(gtkconv->close); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4279 |
| 4445 | 4280 gtk_widget_show(tabby); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4281 gtk_widget_show(menu_tabby); |
| 4359 | 4282 |
| 7143 | 4283 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
| 4284 gaim_gtkconv_update_buddy_icon(conv); | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4285 |
| 4359 | 4286 /* Add this pane to the conversations notebook. */ |
| 4287 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4288 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4289 tab_cont, menu_tabby); |
| 4359 | 4290 |
| 4291 gtk_widget_show(tab_cont); | |
| 4292 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4293 if (gaim_conv_window_get_conversation_count(win) == 1) { |
| 4818 | 4294 /* Er, bug in notebooks? Switch to the page manually. */ |
| 4359 | 4295 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0); |
| 4851 | 4296 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4297 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4298 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4299 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4300 else |
| 4818 | 4301 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE); |
| 4359 | 4302 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4303 focus_conv = g_list_nth_data(gaim_conv_window_get_conversations(win), |
| 5204 | 4304 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook))); |
| 4305 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv); | |
| 4306 gtk_widget_grab_focus(focus_gtkconv->entry); | |
| 4359 | 4307 |
| 4308 if (!new_ui) | |
| 4309 g_object_unref(gtkconv->tab_cont); | |
| 4310 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4311 if (gaim_conv_window_get_conversation_count(win) == 1) |
| 4685 | 4312 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 4313 } |
| 4314 | |
| 4315 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4316 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv) |
| 4359 | 4317 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4318 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4319 GaimGtkConversation *gtkconv; |
| 4359 | 4320 unsigned int index; |
| 4818 | 4321 GaimConversationType conv_type; |
| 4322 | |
| 4323 conv_type = gaim_conversation_get_type(conv); | |
| 4359 | 4324 index = gaim_conversation_get_index(conv); |
| 4325 | |
| 4326 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4327 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4328 | |
| 4329 g_object_ref(gtkconv->tab_cont); | |
| 4330 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont)); | |
| 4331 | |
| 4332 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
| 4333 | |
| 4818 | 4334 /* go back to tabless if need be */ |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4335 if (gaim_conv_window_get_conversation_count(win) <= 2) { |
| 4818 | 4336 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4337 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
| 4818 | 4338 } |
| 4339 | |
| 4340 | |
| 4359 | 4341 /* If this window is setup with an inactive gc, regenerate the menu. */ |
| 4818 | 4342 if (conv_type == GAIM_CONV_IM && |
| 4359 | 4343 gaim_conversation_get_gc(conv) == NULL) { |
| 4344 | |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
4345 generate_send_as_items(win, conv); |
| 4359 | 4346 } |
| 4347 } | |
| 4348 | |
| 4349 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4350 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv, |
| 4359 | 4351 unsigned int new_index) |
| 4352 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4353 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4354 GaimGtkConversation *gtkconv; |
| 4359 | 4355 |
| 4356 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4357 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4358 | |
|
4415
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4359 if (new_index > gaim_conversation_get_index(conv)) |
|
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4360 new_index--; |
|
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4361 |
| 4359 | 4362 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook), |
| 4363 gtkconv->tab_cont, new_index); | |
| 4364 } | |
| 4365 | |
| 4366 static int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4367 gaim_gtk_get_active_index(const GaimConvWindow *win) |
| 4359 | 4368 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4369 GaimGtkWindow *gtkwin; |
|
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4370 int index; |
| 4359 | 4371 |
| 4372 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4373 | |
|
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4374 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)); |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4375 |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4376 /* |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4377 * A fix, because the first conversation may be active, but not |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4378 * appear in the notebook just yet. -- ChipX86 |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4379 */ |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4380 return (index == -1 ? 0 : index); |
| 4359 | 4381 } |
| 4382 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4383 static GaimConvWindowUiOps window_ui_ops = |
| 4359 | 4384 { |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4385 gaim_gtk_conversations_get_conv_ui_ops, |
| 4359 | 4386 gaim_gtk_new_window, |
| 4387 gaim_gtk_destroy_window, | |
| 4388 gaim_gtk_show, | |
| 4389 gaim_gtk_hide, | |
| 4390 gaim_gtk_raise, | |
| 4391 gaim_gtk_flash, | |
| 4392 gaim_gtk_switch_conversation, | |
| 4393 gaim_gtk_add_conversation, | |
| 4394 gaim_gtk_remove_conversation, | |
| 4395 gaim_gtk_move_conversation, | |
| 4396 gaim_gtk_get_active_index | |
| 4397 }; | |
| 4398 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4399 GaimConvWindowUiOps * |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4400 gaim_gtk_conversations_get_win_ui_ops(void) |
| 4359 | 4401 { |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4402 return &window_ui_ops; |
| 4359 | 4403 } |
| 4404 | |
| 4405 /************************************************************************** | |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4406 * Conversation UI operations |
| 4359 | 4407 **************************************************************************/ |
| 4408 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4409 gaim_gtkconv_destroy(GaimConversation *conv) |
| 4359 | 4410 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4411 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4359 | 4412 |
| 4413 if (gtkconv->dialogs.log != NULL) | |
| 4414 gtk_widget_destroy(gtkconv->dialogs.log); | |
| 4415 | |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4416 gtk_widget_destroy(gtkconv->tab_cont); |
| 4892 | 4417 g_object_unref(gtkconv->tab_cont); |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4418 |
| 4359 | 4419 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 4755 | 4420 if (gtkconv->u.im->icon_timer != 0) |
| 4421 g_source_remove(gtkconv->u.im->icon_timer); | |
| 4422 | |
| 4359 | 4423 if (gtkconv->u.im->save_icon != NULL) |
| 4424 gtk_widget_destroy(gtkconv->u.im->save_icon); | |
| 4425 | |
| 4426 if (gtkconv->u.im->anim != NULL) | |
| 4793 | 4427 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 4359 | 4428 |
| 4429 g_free(gtkconv->u.im); | |
| 4430 } | |
| 4431 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 4432 g_free(gtkconv->u.chat); | |
| 4433 } | |
| 4434 | |
| 4633 | 4435 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips)); |
| 4436 | |
| 4359 | 4437 g_free(gtkconv); |
| 4438 } | |
| 4439 | |
| 4440 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4441 gaim_gtkconv_write_im(GaimConversation *conv, const char *who, |
| 6982 | 4442 const char *message, GaimMessageFlags flags, |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4443 time_t mtime) |
| 4359 | 4444 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4445 GaimGtkConversation *gtkconv; |
| 8630 | 4446 GaimConvWindow *gaimwin; |
| 4447 GaimGtkWindow *gtkwin; | |
| 4448 gboolean has_focus; | |
| 4359 | 4449 |
| 4450 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 8630 | 4451 gaimwin = gaim_conversation_get_window(conv); |
| 4452 gtkwin = GAIM_GTK_WINDOW(gaimwin); | |
| 4453 | |
| 4454 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL); | |
| 4359 | 4455 |
| 6621 | 4456 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4457 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4458 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4459 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4460 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4461 |
|
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4462 /* Play a sound, if specified in prefs. */ |
| 8630 | 4463 if (gtkconv->make_sound && !((gaim_conv_window_get_active_conversation(gaimwin) == conv) && |
| 8633 | 4464 !gaim_prefs_get_bool("/gaim/gtk/sound/conv_focus") && has_focus)) { |
| 6621 | 4465 if (flags & GAIM_MESSAGE_RECV) { |
| 4359 | 4466 if (gtkconv->u.im->a_virgin && |
| 5820 | 4467 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) { |
| 4359 | 4468 |
| 4561 | 4469 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE); |
| 4359 | 4470 } |
| 4471 else | |
| 4561 | 4472 gaim_sound_play_event(GAIM_SOUND_RECEIVE); |
| 4359 | 4473 } |
| 4474 else { | |
| 4561 | 4475 gaim_sound_play_event(GAIM_SOUND_SEND); |
| 4359 | 4476 } |
| 4477 } | |
| 4478 | |
| 4479 gtkconv->u.im->a_virgin = FALSE; | |
| 4480 | |
| 6982 | 4481 gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4482 } |
| 4483 | |
| 4484 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4485 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who, |
| 6621 | 4486 const char *message, GaimMessageFlags flags, time_t mtime) |
| 4359 | 4487 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4488 GaimGtkConversation *gtkconv; |
| 8630 | 4489 GaimConvWindow *gaimwin; |
| 4490 GaimGtkWindow *gtkwin; | |
| 4491 gboolean has_focus; | |
| 4359 | 4492 |
| 4493 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 8630 | 4494 gaimwin = gaim_conversation_get_window(conv); |
| 4495 gtkwin = GAIM_GTK_WINDOW(gaimwin); | |
| 4496 | |
| 4497 g_object_get(G_OBJECT(gtkwin->window), "has-toplevel-focus", &has_focus, NULL); | |
| 4359 | 4498 |
|
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4499 /* Play a sound, if specified in prefs. */ |
| 8630 | 4500 if (gtkconv->make_sound && !((gaim_conv_window_get_active_conversation(gaimwin) == conv) && |
| 8633 | 4501 !gaim_prefs_get_bool("/gaim/gtk/sound/conv_focus") && has_focus)) { |
| 6621 | 4502 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND)) |
| 4561 | 4503 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY); |
| 6621 | 4504 else if (flags & GAIM_MESSAGE_RECV) { |
| 4505 if ((flags & GAIM_MESSAGE_NICK) && | |
| 8573 | 4506 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said") && |
| 4507 !(flags & GAIM_MESSAGE_SYSTEM)) { | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4508 |
| 4561 | 4509 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4510 } |
| 4359 | 4511 else |
| 4561 | 4512 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY); |
| 4359 | 4513 } |
| 4514 } | |
| 4515 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4516 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks")) |
| 6621 | 4517 flags |= GAIM_MESSAGE_COLORIZE; |
| 4359 | 4518 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4519 /* Raise the window, if specified in prefs. */ |
| 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/chat/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 |
| 6982 | 4526 gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4527 } |
| 4528 | |
| 4529 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4530 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who, |
| 6982 | 4531 const char *message, GaimMessageFlags flags, |
| 4359 | 4532 time_t mtime) |
| 4533 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4534 GaimGtkConversation *gtkconv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4535 GaimConvWindow *win; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4536 GaimConnection *gc; |
| 4359 | 4537 int gtk_font_options = 0; |
| 6982 | 4538 GSList *images = NULL; |
| 7440 | 4539 char buf[BUF_LONG]; |
| 4359 | 4540 char buf2[BUF_LONG]; |
| 4541 char mdate[64]; | |
| 4542 char color[10]; | |
| 4543 char *str; | |
| 4544 char *with_font_tag; | |
| 4896 | 4545 char *sml_attrib = NULL; |
| 6982 | 4546 size_t length = strlen(message) + 1; |
| 4895 | 4547 |
| 4359 | 4548 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4549 gc = gaim_conversation_get_gc(conv); | |
| 4550 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4551 win = gaim_conversation_get_window(conv); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4552 |
| 6621 | 4553 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
| 7431 | 4554 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
| 4555 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) || | |
| 4556 (gaim_conversation_get_type(conv) == GAIM_CONV_IM && | |
| 8897 | 4557 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")))) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4558 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4559 gaim_conv_window_show(win); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4560 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4561 |
| 7078 | 4562 if (flags & GAIM_MESSAGE_IMAGES) |
| 4563 gaim_gtk_find_images(message, &images); | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4564 |
| 8677 | 4565 if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml)))) |
| 4566 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0); | |
| 4567 | |
| 5133 | 4568 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */ |
| 4569 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime)); | |
| 4570 else | |
| 4571 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); | |
| 4359 | 4572 |
| 4896 | 4573 if(gc) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4574 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name); |
| 7440 | 4575 |
| 4359 | 4576 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS; |
| 4577 | |
| 8944 | 4578 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_formatting")) { |
| 4359 | 4579 gtk_font_options ^= GTK_IMHTML_NO_COLOURS; |
| 4580 gtk_font_options ^= GTK_IMHTML_NO_FONTS; | |
| 4581 gtk_font_options ^= GTK_IMHTML_NO_SIZES; | |
| 8944 | 4582 } |
| 4359 | 4583 |
| 7956 | 4584 /* this is gonna crash one day, I can feel it. */ |
| 4585 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(conv->account)))->options & | |
| 7431 | 4586 OPT_PROTO_USE_POINTSIZE) { |
| 5367 | 4587 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE; |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4588 } |
| 4359 | 4589 |
| 6621 | 4590 if (flags & GAIM_MESSAGE_SYSTEM) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4591 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
| 8380 | 4592 g_snprintf(buf, BUF_LONG, "<FONT SIZE=\"2\">(%s)</FONT> <B>%s</B>", |
| 7431 | 4593 mdate, message); |
| 4359 | 4594 else |
| 4595 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message); | |
| 7440 | 4596 |
| 4359 | 4597 g_snprintf(buf2, sizeof(buf2), |
| 8690 | 4598 "<FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT>", |
| 7850 | 4599 sml_attrib, mdate, message); |
| 7440 | 4600 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4601 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4602 buf2, 0, images); |
| 7440 | 4603 |
| 7583 | 4604 /* Add the message to a conversations scrollback buffer */ |
| 4605 conv->history = g_string_append(conv->history, buf); | |
| 4606 conv->history = g_string_append(conv->history, "<BR>\n"); | |
| 7440 | 4607 |
| 8722 | 4608 } else if (flags & GAIM_MESSAGE_ERROR) { |
| 4609 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) | |
| 4610 g_snprintf(buf, BUF_LONG, "<FONT SIZE=\"2\">(%s)</FONT> <B>%s</B>", | |
| 4611 mdate, message); | |
| 4612 else | |
| 4613 g_snprintf(buf, BUF_LONG, "<FONT COLOR=\"#ff0000\"><B>%s</B></FONT>", message); | |
| 4614 | |
| 4615 g_snprintf(buf2, sizeof(buf2), | |
| 4616 "<FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT>", | |
| 4617 sml_attrib, mdate, message); | |
| 4618 | |
| 4619 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), | |
| 4620 buf2, 0, images); | |
| 4621 | |
| 4622 /* Add the message to a conversations scrollback buffer */ | |
| 4623 conv->history = g_string_append(conv->history, buf); | |
| 4624 conv->history = g_string_append(conv->history, "<BR>\n"); | |
| 7431 | 4625 } else if (flags & GAIM_MESSAGE_NO_LOG) { |
| 4359 | 4626 g_snprintf(buf, BUF_LONG, |
| 8690 | 4627 "<B><FONT %s COLOR=\"#777777\">%s</FONT></B>", |
| 7850 | 4628 sml_attrib, message); |
| 7440 | 4629 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4630 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4631 buf, 0, images); |
| 4359 | 4632 } |
| 4633 else { | |
| 4895 | 4634 char *new_message = g_memdup(message, length); |
| 8908 | 4635 char *who_escaped = g_markup_escape_text(who, strlen(who)); |
| 7440 | 4636 |
| 6621 | 4637 if (flags & GAIM_MESSAGE_WHISPER) { |
| 4359 | 4638 str = g_malloc(1024); |
| 7440 | 4639 |
| 4359 | 4640 /* If we're whispering, it's not an autoresponse. */ |
| 7564 | 4641 if (gaim_message_meify(new_message, length)) { |
| 8908 | 4642 g_snprintf(str, 1024, "***%s", who_escaped); |
| 4359 | 4643 strcpy(color, "#6C2585"); |
| 4644 } | |
| 4645 else { | |
| 8908 | 4646 g_snprintf(str, 1024, "*%s*:", who_escaped); |
| 4359 | 4647 strcpy(color, "#00FF00"); |
| 4648 } | |
| 7440 | 4649 } |
| 4359 | 4650 else { |
| 7564 | 4651 if (gaim_message_meify(new_message, length)) { |
| 4359 | 4652 str = g_malloc(1024); |
| 7440 | 4653 |
| 6621 | 4654 if (flags & GAIM_MESSAGE_AUTO_RESP) |
| 8908 | 4655 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who_escaped); |
| 4359 | 4656 else |
| 8908 | 4657 g_snprintf(str, 1024, "***%s", who_escaped); |
| 7440 | 4658 |
| 6621 | 4659 if (flags & GAIM_MESSAGE_NICK) |
| 4359 | 4660 strcpy(color, "#AF7F00"); |
| 4661 else | |
| 4662 strcpy(color, "#062585"); | |
| 4663 } | |
| 4664 else { | |
| 4665 str = g_malloc(1024); | |
| 6621 | 4666 if (flags & GAIM_MESSAGE_AUTO_RESP) |
| 8908 | 4667 g_snprintf(str, 1024, "%s %s", who_escaped, AUTO_RESPONSE); |
| 4359 | 4668 else |
| 8908 | 4669 g_snprintf(str, 1024, "%s:", who_escaped); |
| 6621 | 4670 if (flags & GAIM_MESSAGE_NICK) |
| 4359 | 4671 strcpy(color, "#AF7F00"); |
| 6621 | 4672 else if (flags & GAIM_MESSAGE_RECV) { |
| 4673 if (flags & GAIM_MESSAGE_COLORIZE) { | |
| 4359 | 4674 const char *u; |
| 4675 int m = 0; | |
| 7440 | 4676 |
| 4359 | 4677 for (u = who; *u != '\0'; u++) |
| 4678 m += *u; | |
| 7440 | 4679 |
| 4359 | 4680 m = m % NUM_NICK_COLORS; |
| 7440 | 4681 |
| 4359 | 4682 strcpy(color, nick_colors[m]); |
| 4683 } | |
| 4684 else | |
| 7854 | 4685 strcpy(color, RECV_COLOR); |
| 4359 | 4686 } |
| 6621 | 4687 else if (flags & GAIM_MESSAGE_SEND) |
| 7854 | 4688 strcpy(color, SEND_COLOR); |
| 4359 | 4689 } |
| 8908 | 4690 |
| 4691 if(who_escaped) | |
| 4692 g_free(who_escaped); | |
| 4359 | 4693 } |
| 7440 | 4694 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4695 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
| 4359 | 4696 g_snprintf(buf, BUF_LONG, |
| 8380 | 4697 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\">(%s)</FONT> " |
| 7431 | 4698 "<B>%s</B></FONT> ", color, |
| 4699 sml_attrib ? sml_attrib : "", mdate, str); | |
| 4359 | 4700 else |
| 4701 g_snprintf(buf, BUF_LONG, | |
| 7431 | 4702 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color, |
| 4703 sml_attrib ? sml_attrib : "", str); | |
| 7440 | 4704 |
| 4359 | 4705 g_snprintf(buf2, BUF_LONG, |
| 8380 | 4706 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>" |
| 7431 | 4707 "<B>%s</B></FONT> ", |
| 4708 color, sml_attrib ? sml_attrib : "", mdate, str); | |
| 7440 | 4709 |
| 4359 | 4710 g_free(str); |
| 4711 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4712 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4713 buf2, 0, images); |
| 4359 | 4714 |
| 4895 | 4715 if(gc){ |
| 4896 | 4716 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : ""); |
| 4895 | 4717 char *post = "</font>"; |
| 4718 int pre_len = strlen(pre); | |
| 4719 int post_len = strlen(post); | |
| 7440 | 4720 |
| 4895 | 4721 with_font_tag = g_malloc(length + pre_len + post_len + 1); |
| 7440 | 4722 |
| 4895 | 4723 strcpy(with_font_tag, pre); |
| 4724 memcpy(with_font_tag + pre_len, new_message, length); | |
| 4725 strcpy(with_font_tag + pre_len + length, post); | |
| 7440 | 4726 |
| 4895 | 4727 length += pre_len + post_len; |
| 4728 g_free(pre); | |
| 4729 } | |
| 4608 | 4730 else |
| 4895 | 4731 with_font_tag = g_memdup(new_message, length); |
| 7440 | 4732 |
| 7589 | 4733 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
| 7431 | 4734 with_font_tag, gtk_font_options, images); |
| 7440 | 4735 |
| 8557 | 4736 conv->history = g_string_append(conv->history, buf); |
| 4737 conv->history = g_string_append(conv->history, new_message); | |
| 4738 conv->history = g_string_append(conv->history, "<BR>\n"); | |
| 7440 | 4739 |
| 4740 g_free(with_font_tag); | |
| 7447 | 4741 g_free(new_message); |
| 7440 | 4742 } |
| 4743 | |
| 6062 | 4744 |
| 5012 | 4745 if(sml_attrib) |
| 4746 g_free(sml_attrib); | |
| 6982 | 4747 |
| 4748 if (images) { | |
| 7078 | 4749 GSList *tmp; |
| 4750 | |
| 4751 for (tmp = images; tmp; tmp = tmp->next) { | |
| 4752 GdkPixbuf *pixbuf = tmp->data; | |
| 4753 if(pixbuf) | |
| 4754 g_object_unref(pixbuf); | |
| 6982 | 4755 } |
| 7078 | 4756 |
| 6982 | 4757 g_slist_free(images); |
| 4758 } | |
| 4359 | 4759 } |
| 4760 | |
| 4761 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4762 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user) |
| 4359 | 4763 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4764 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4765 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4766 GaimGtkChatPane *gtkchat; |
| 4359 | 4767 char tmp[BUF_LONG]; |
| 4768 int num_users; | |
| 4769 int pos; | |
| 4770 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4771 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4772 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4773 gtkchat = gtkconv->u.chat; | |
| 4774 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4775 num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
| 4359 | 4776 |
| 4777 g_snprintf(tmp, sizeof(tmp), | |
| 4778 ngettext("%d person in room", "%d people in room", | |
| 4779 num_users), | |
| 4780 num_users); | |
| 4781 | |
| 4782 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
| 4783 | |
| 4784 if (gtkconv->make_sound) | |
| 4561 | 4785 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN); |
| 4359 | 4786 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4787 pos = g_list_index(gaim_conv_chat_get_users(chat), user); |
| 4359 | 4788 |
| 4789 add_chat_buddy_common(conv, user, pos); | |
| 4790 } | |
| 4791 | |
| 4792 static void | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4793 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4794 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4795 GaimConvChat *chat; |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4796 GaimGtkConversation *gtkconv; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4797 GaimGtkChatPane *gtkchat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4798 GList *l; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4799 char tmp[BUF_LONG]; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4800 int num_users; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4801 int pos; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4802 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4803 chat = GAIM_CONV_CHAT(conv); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4804 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4805 gtkchat = gtkconv->u.chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4806 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4807 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
|
4808 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4809 g_snprintf(tmp, sizeof(tmp), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4810 ngettext("%d person in room", "%d people in room", |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4811 num_users), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4812 num_users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4813 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4814 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4815 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4816 for (l = users; l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4817 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
|
4818 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4819 add_chat_buddy_common(conv, (char *)l->data, pos); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4820 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4821 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4822 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4823 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4824 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name, |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4825 const char *new_name) |
| 4359 | 4826 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4827 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4828 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4829 GaimGtkChatPane *gtkchat; |
| 4359 | 4830 GtkTreeIter iter; |
| 4831 GtkTreeModel *model; | |
| 4832 GList *names; | |
| 4833 int pos; | |
| 4834 int f = 1; | |
| 4835 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4836 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4837 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4838 gtkchat = gtkconv->u.chat; | |
| 4839 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4840 for (names = gaim_conv_chat_get_users(chat); |
| 4359 | 4841 names != NULL; |
| 4842 names = names->next) { | |
| 4843 | |
| 4844 char *u = (char *)names->data; | |
| 4845 | |
| 4793 | 4846 if (!gaim_utf8_strcasecmp(u, old_name)) { |
| 4359 | 4847 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
| 4848 | |
| 4849 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
| 4850 break; | |
| 4851 | |
| 4852 while (f != 0) { | |
| 4853 char *val; | |
| 4854 | |
| 4855 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
| 4856 | |
| 4793 | 4857 if (!gaim_utf8_strcasecmp(old_name, val)) { |
| 4359 | 4858 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 4640 | 4859 break; |
| 4860 } | |
| 4359 | 4861 |
| 4862 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
| 4863 | |
| 4864 g_free(val); | |
| 4865 } | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4866 |
| 4359 | 4867 break; |
| 4868 } | |
| 4869 } | |
| 4870 | |
| 4871 if (!names) | |
| 4872 return; | |
| 4873 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4874 pos = g_list_index(gaim_conv_chat_get_users(chat), new_name); |
| 4359 | 4875 |
| 4876 add_chat_buddy_common(conv, new_name, pos); | |
| 4877 } | |
| 4878 | |
| 4879 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4880 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user) |
| 4359 | 4881 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4882 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4883 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4884 GaimGtkChatPane *gtkchat; |
| 4359 | 4885 GtkTreeIter iter; |
| 4886 GtkTreeModel *model; | |
| 4887 GList *names; | |
| 4888 char tmp[BUF_LONG]; | |
| 4889 int num_users; | |
| 4890 int f = 1; | |
| 4891 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4892 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4893 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4894 gtkchat = gtkconv->u.chat; | |
| 4895 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4896 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
|
4897 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4898 for (names = gaim_conv_chat_get_users(chat); |
| 4359 | 4899 names != NULL; |
| 4900 names = names->next) { | |
| 4901 | |
| 4902 char *u = (char *)names->data; | |
| 4903 | |
| 4793 | 4904 if (!gaim_utf8_strcasecmp(u, user)) { |
| 4359 | 4905 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
| 4906 | |
| 4907 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
| 4908 break; | |
| 4909 | |
| 4910 while (f != 0) { | |
| 4911 char *val; | |
| 4912 | |
| 4913 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
| 4914 | |
| 4793 | 4915 if (!gaim_utf8_strcasecmp(user, val)) |
| 4359 | 4916 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 4917 | |
| 4918 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
| 4919 | |
| 4920 g_free(val); | |
| 4921 } | |
| 4922 | |
| 4923 break; | |
| 4924 } | |
| 4925 } | |
| 4926 | |
| 4927 if (names == NULL) | |
| 4928 return; | |
| 4929 | |
| 4930 g_snprintf(tmp, sizeof(tmp), | |
| 4931 ngettext("%d person in room", "%d people in room", | |
| 4932 num_users), num_users); | |
| 4933 | |
| 4934 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
| 4935 | |
| 4936 if (gtkconv->make_sound) | |
| 4561 | 4937 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE); |
| 4359 | 4938 } |
| 4939 | |
| 4940 static void | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4941 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4942 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4943 GaimConvChat *chat; |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4944 GaimGtkConversation *gtkconv; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4945 GaimGtkChatPane *gtkchat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4946 GtkTreeIter iter; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4947 GtkTreeModel *model; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4948 GList *names = NULL; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4949 GList *l; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4950 char tmp[BUF_LONG]; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4951 int num_users; |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4952 gboolean f; |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4953 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4954 chat = GAIM_CONV_CHAT(conv); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4955 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4956 gtkchat = gtkconv->u.chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4957 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4958 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
|
4959 g_list_length(users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4960 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4961 for (l = users; l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4962 for (names = gaim_conv_chat_get_users(chat); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4963 names != NULL; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4964 names = names->next) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4965 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4966 char *u = (char *)names->data; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4967 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4968 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4969 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4970 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4971 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4972 &iter)) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4973 break; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4974 |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4975 do { |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4976 char *val; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4977 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4978 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4979 1, &val, -1); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4980 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4981 if (!gaim_utf8_strcasecmp((char *)l->data, val)) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4982 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4983 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4984 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4985 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4986 g_free(val); |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4987 } while (f); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4988 |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4989 break; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4990 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4991 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4992 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4993 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4994 if (names == NULL) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4995 return; |
|
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 g_snprintf(tmp, sizeof(tmp), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4998 ngettext("%d person in room", "%d people in room", |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4999 num_users), num_users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5000 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5001 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5002 } |
|
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 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5005 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) |
| 4359 | 5006 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5007 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5008 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5009 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5010 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5011 GaimConvChat *chat; |
| 4359 | 5012 |
| 5013 win = gaim_conversation_get_window(conv); | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5014 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 5015 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 5016 | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5017 if (type == GAIM_CONV_UPDATE_ACCOUNT) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5018 { |
| 4359 | 5019 gaim_conversation_autoset_title(conv); |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5020 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5021 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5022 gaim_gtkconv_update_buddy_icon(conv); |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5023 |
| 4359 | 5024 gaim_gtkconv_update_buttons_by_protocol(conv); |
| 5025 | |
| 4685 | 5026 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 5027 |
| 5028 smiley_themeize(gtkconv->imhtml); | |
| 6394 | 5029 |
| 6395 | 5030 update_tab_icon(conv); |
| 4359 | 5031 } |
| 5032 else if (type == GAIM_CONV_UPDATE_TYPING || | |
|
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5033 type == GAIM_CONV_UPDATE_UNSEEN || |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5034 type == GAIM_CONV_UPDATE_TITLE) |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5035 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5036 const char *title; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5037 GaimConvIm *im = NULL; |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5038 char color[8]; |
| 4736 | 5039 |
| 4359 | 5040 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5041 im = GAIM_CONV_IM(conv); |
| 4359 | 5042 |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5043 title = gaim_conversation_get_title(conv); |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5044 |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5045 *color = '\0'; |
| 4359 | 5046 |
| 5047 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) | |
| 5048 gtk_widget_realize(gtkconv->tab_label); | |
| 5049 | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5050 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
|
5051 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5052 strcpy(color, "#47A046"); |
| 4359 | 5053 } |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5054 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
|
5055 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5056 strcpy(color, "#D1940C"); |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5057 } |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5058 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5059 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5060 strcpy(color, "#314E6C"); |
| 4359 | 5061 } |
| 8252 | 5062 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT) |
| 5063 { | |
| 5064 strcpy(color, "#DF421E"); | |
| 5065 } | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5066 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5067 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5068 strcpy(color, "#868272"); |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5069 } |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5070 |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5071 if (*color != '\0') |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5072 { |
| 8536 | 5073 char *html_title,*label; |
| 5074 | |
| 5075 html_title = gaim_escape_html(title); | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5076 |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5077 label = g_strdup_printf("<span color=\"%s\">%s</span>", |
| 8536 | 5078 color, html_title); |
| 5079 g_free(html_title); | |
|
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
5080 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label); |
|
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
5081 g_free(label); |
| 4359 | 5082 } |
|
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
5083 else |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5084 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5085 |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5086 if (conv == gaim_conv_window_get_active_conversation(win)) |
| 4736 | 5087 update_typing_icon(conv); |
|
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5088 |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5089 if (type == GAIM_CONV_UPDATE_TITLE) { |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5090 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5091 if (conv == gaim_conv_window_get_active_conversation(win)) |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5092 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5093 } |
| 4359 | 5094 } |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5095 else if (type == GAIM_CONV_UPDATE_TOPIC) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5096 { |
| 7154 | 5097 const char *topic; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5098 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 5099 gtkchat = gtkconv->u.chat; |
| 5100 | |
| 7154 | 5101 topic = gaim_conv_chat_get_topic(chat); |
| 5102 | |
| 5103 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),topic); | |
| 5104 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text, | |
|
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5105 topic, NULL); |
| 4359 | 5106 } |
| 5107 else if (type == GAIM_CONV_ACCOUNT_ONLINE || | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5108 type == GAIM_CONV_ACCOUNT_OFFLINE) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5109 { |
| 7929 | 5110 gray_stuff_out(gaim_conv_window_get_active_conversation(win)); |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
5111 generate_send_as_items(win, NULL); |
| 6440 | 5112 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
| 5113 update_tab_icon(conv); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5114 } |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5115 else if (type == GAIM_CONV_UPDATE_AWAY) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5116 { |
| 6440 | 5117 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
| 5118 update_tab_icon(conv); | |
| 4359 | 5119 } |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
5120 else if (type == GAIM_CONV_UPDATE_ADD || type == GAIM_CONV_UPDATE_REMOVE || |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
5121 type == GAIM_CONV_UPDATE_CHATLEFT) |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5122 { |
| 7929 | 5123 gray_stuff_out(conv); |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
5124 } |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5125 else if (type == GAIM_CONV_UPDATE_ICON) |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5126 { |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5127 gaim_gtkconv_update_buddy_icon(conv); |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5128 } |
| 4359 | 5129 } |
| 5130 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5131 static GaimConversationUiOps conversation_ui_ops = |
| 4359 | 5132 { |
| 5133 gaim_gtkconv_destroy, /* destroy_conversation */ | |
| 5134 gaim_gtkconv_write_chat, /* write_chat */ | |
| 5135 gaim_gtkconv_write_im, /* write_im */ | |
| 5136 gaim_gtkconv_write_conv, /* write_conv */ | |
| 5137 gaim_gtkconv_chat_add_user, /* chat_add_user */ | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5138 gaim_gtkconv_chat_add_users, /* chat_add_users */ |
| 4359 | 5139 gaim_gtkconv_chat_rename_user, /* chat_rename_user */ |
| 5140 gaim_gtkconv_chat_remove_user, /* chat_remove_user */ | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5141 gaim_gtkconv_chat_remove_users, /* chat_remove_users */ |
| 4359 | 5142 NULL, /* update_progress */ |
| 5143 gaim_gtkconv_updated /* updated */ | |
| 5144 }; | |
| 5145 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5146 GaimConversationUiOps * |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5147 gaim_gtk_conversations_get_conv_ui_ops(void) |
| 4359 | 5148 { |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
5149 return &conversation_ui_ops; |
| 4359 | 5150 } |
| 5151 | |
| 5152 /************************************************************************** | |
| 5153 * Public conversation utility functions | |
| 5154 **************************************************************************/ | |
| 5155 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5156 gaim_gtkconv_update_buddy_icon(GaimConversation *conv) |
| 4359 | 5157 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5158 GaimGtkConversation *gtkconv; |
| 7143 | 5159 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); |
| 4359 | 5160 |
| 5161 char filename[256]; | |
| 5162 FILE *file; | |
| 5163 GError *err = NULL; | |
| 5164 | |
| 6695 | 5165 GaimBuddy *buddy; |
| 4757 | 5166 |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5167 const void *data; |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5168 size_t len; |
| 4359 | 5169 |
| 5170 GdkPixbuf *buf; | |
| 5171 | |
| 8821 | 5172 GtkWidget *vbox; |
| 4359 | 5173 GtkWidget *event; |
| 5174 GtkWidget *frame; | |
| 5175 GdkPixbuf *scale; | |
| 5176 GdkPixmap *pm; | |
| 5177 GdkBitmap *bm; | |
| 5178 int sf = 0; | |
| 5179 | |
| 8821 | 5180 GaimButtonStyle button_type; |
| 5181 | |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5182 g_return_if_fail(conv != NULL); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5183 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5184 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM); |
| 4359 | 5185 |
| 5186 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5187 | |
| 5188 remove_icon(gtkconv); | |
| 5189 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5190 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
| 4359 | 5191 return; |
| 5192 | |
| 5193 if (gaim_conversation_get_gc(conv) == NULL) | |
| 5194 return; | |
| 5195 | |
| 8189 | 5196 if (gtkconv->u.im->anim) |
| 4793 | 5197 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 5198 | |
| 4757 | 5199 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv), |
| 5200 gaim_conversation_get_name(conv))) != NULL) { | |
| 8374 | 5201 const char *iconfile; |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
5202 if((iconfile = gaim_blist_node_get_string((GaimBlistNode*)buddy, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
5203 "buddy_icon"))) { |
| 8374 | 5204 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); |
| 5205 struct stat st; | |
| 5206 if ((icon == NULL) && (!stat(iconfile, &st))) { | |
| 5207 FILE *file = fopen(iconfile, "rb"); | |
| 5208 if (file) { | |
| 5209 char *data = g_malloc(st.st_size); | |
| 5210 fread(data, 1, st.st_size, file); | |
| 5211 fclose(file); | |
| 5212 gaim_buddy_icons_set_for_user(gaim_conversation_get_account(conv), gaim_conversation_get_name(conv), data, st.st_size); | |
| 5213 g_free(data); | |
| 5214 } | |
| 5215 return; | |
| 5216 } | |
| 5217 else | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
5218 gtkconv->u.im->anim = |
| 8496 | 5219 gdk_pixbuf_animation_new_from_file(iconfile, &err); /* LEAK */ |
| 8374 | 5220 } |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5221 } |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5222 else |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5223 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5224 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
|
5225 |
|
6877
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5226 if (icon == NULL) |
|
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5227 return; |
|
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5228 |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5229 data = gaim_buddy_icon_get_data(icon, &len); |
| 4757 | 5230 |
| 5231 /* this is such an evil hack, i don't know why i'm even considering it. | |
| 5232 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */ | |
| 5233 g_snprintf(filename, sizeof(filename), | |
| 5234 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d", | |
| 5235 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid()); | |
| 5236 | |
| 5237 if (!(file = fopen(filename, "wb"))) | |
| 5238 return; | |
| 5239 | |
| 5240 fwrite(data, 1, len, file); | |
| 5241 fclose(file); | |
| 5242 | |
| 5243 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err); | |
| 5244 /* make sure we remove the file as soon as possible */ | |
| 5245 unlink(filename); | |
| 5246 } | |
| 4359 | 5247 |
| 5248 if (err) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5249 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5250 "Buddy icon error: %s\n", err->message); |
| 4359 | 5251 g_error_free(err); |
| 5252 } | |
| 5253 | |
| 5254 if (!gtkconv->u.im->anim) | |
| 5255 return; | |
| 5256 | |
| 4793 | 5257 if(gtkconv->u.im->iter) |
| 5258 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 5259 | |
| 4359 | 5260 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) { |
| 5261 gtkconv->u.im->iter = NULL; | |
| 5262 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
| 5263 } else { | |
| 5264 gtkconv->u.im->iter = | |
| 8496 | 5265 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); /* LEAK */ |
| 4359 | 5266 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); |
| 8189 | 5267 if (gtkconv->u.im->animate) |
| 5268 start_anim(NULL, conv); | |
| 4359 | 5269 } |
| 5270 | |
| 5271 sf = SCALE(gtkconv->u.im->anim); | |
| 5272 scale = gdk_pixbuf_scale_simple(buf, | |
| 5273 MAX(gdk_pixbuf_get_width(buf) * sf / | |
| 5274 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
| 5275 MAX(gdk_pixbuf_get_height(buf) * sf / | |
| 5276 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
| 5277 GDK_INTERP_NEAREST); | |
| 5278 | |
| 5279 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 4793 | 5280 g_object_unref(G_OBJECT(scale)); |
| 4359 | 5281 |
| 8821 | 5282 |
| 5283 vbox = gtk_vbox_new(FALSE, 0); | |
| 5284 button_type = gaim_prefs_get_int("/gaim/gtk/conversations/im/button_type"); | |
| 5285 if(button_type == GAIM_BUTTON_NONE) { | |
| 5286 gtk_box_pack_start(GTK_BOX(gtkconv->entrybox), vbox, FALSE, FALSE, 0); | |
| 5287 gtk_box_reorder_child(GTK_BOX(gtkconv->entrybox), vbox, 0); | |
| 5288 } else { | |
| 5289 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), vbox, FALSE, FALSE, 0); | |
| 5290 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), vbox, 0); | |
| 5291 } | |
| 5292 | |
| 4359 | 5293 frame = gtk_frame_new(NULL); |
| 5294 gtk_frame_set_shadow_type(GTK_FRAME(frame), | |
| 5295 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN)); | |
| 8821 | 5296 gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); |
| 5297 | |
| 5298 | |
| 5299 gtk_widget_show(vbox); | |
| 4359 | 5300 gtk_widget_show(frame); |
| 5301 | |
| 5302 event = gtk_event_box_new(); | |
| 5303 gtk_container_add(GTK_CONTAINER(frame), event); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5304 g_signal_connect(G_OBJECT(event), "button-press-event", |
| 4359 | 5305 G_CALLBACK(icon_menu), conv); |
| 5306 gtk_widget_show(event); | |
| 5307 | |
| 4635 | 5308 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm); |
| 4359 | 5309 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf); |
| 5310 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon); | |
| 5311 gtk_widget_show(gtkconv->u.im->icon); | |
| 5312 | |
| 4793 | 5313 g_object_unref(G_OBJECT(pm)); |
| 4359 | 5314 |
| 5315 if (bm) | |
| 4793 | 5316 g_object_unref(G_OBJECT(bm)); |
| 7143 | 5317 |
| 5318 /* The buddy icon code needs badly to be fixed. */ | |
| 5319 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
| 8068 | 5320 if(conv == gaim_conv_window_get_active_conversation(gaim_conversation_get_window(conv))) |
| 5321 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf); | |
| 4359 | 5322 } |
| 5323 | |
| 5324 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5325 gaim_gtkconv_update_font_colors(GaimConversation *conv) |
| 4421 | 5326 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5327 GaimGtkConversation *gtkconv; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5328 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5329 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5330 return; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5331 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5332 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5333 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5334 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5335 >kconv->fg_color); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5336 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5337 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5338 >kconv->bg_color); |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5339 } |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5340 |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5341 void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5342 gaim_gtkconv_update_font_face(GaimConversation *conv) |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5343 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5344 GaimGtkConversation *gtkconv; |
| 6141 | 5345 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5346 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5347 return; |
| 6141 | 5348 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5349 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
5350 |
| 6141 | 5351 strncpy(gtkconv->fontface, |
| 5352 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"), | |
| 5353 sizeof(gtkconv->fontface)); | |
| 4421 | 5354 } |
| 5355 | |
| 5356 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5357 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv) |
| 4359 | 5358 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5359 GaimConvWindow *win; |
| 4359 | 5360 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5361 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5362 return; |
| 5363 | |
| 7887 | 5364 win = gaim_conversation_get_window(conv); |
| 5365 | |
| 5366 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv) | |
| 5367 gray_stuff_out(conv); | |
| 4359 | 5368 } |
| 5369 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5370 GaimConvWindow * |
| 4359 | 5371 gaim_gtkwin_get_at_xy(int x, int y) |
| 5372 { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5373 GaimConvWindow *win = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5374 GaimGtkWindow *gtkwin; |
| 4359 | 5375 GdkWindow *gdkwin; |
| 5376 GList *l; | |
| 5377 | |
| 5378 gdkwin = gdk_window_at_pointer(&x, &y); | |
| 5379 | |
| 5380 if (gdkwin) | |
| 5381 gdkwin = gdk_window_get_toplevel(gdkwin); | |
| 5382 | |
| 5383 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5384 win = (GaimConvWindow *)l->data; |
| 4359 | 5385 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5386 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5387 continue; |
| 5388 | |
| 5389 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5390 | |
| 5391 if (gdkwin == gtkwin->window->window) | |
| 5392 return win; | |
| 5393 } | |
| 5394 | |
| 5395 return NULL; | |
| 5396 } | |
| 5397 | |
| 5398 int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5399 gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y) |
| 4359 | 5400 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5401 GaimGtkWindow *gtkwin; |
| 4359 | 5402 GList *l; |
| 5403 gint nb_x, nb_y, x_rel, y_rel; | |
| 5404 GtkNotebook *notebook; | |
| 5405 GtkWidget *tab; | |
| 5406 gint i, page_num = 0; | |
| 5407 gboolean first_visible = TRUE; | |
| 5408 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5409 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5410 return -1; |
| 5411 | |
| 5412 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5413 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 5414 | |
| 5415 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 5416 x_rel = x - nb_x; | |
| 5417 y_rel = y - nb_y; | |
| 5418 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5419 for (l = gaim_conv_window_get_conversations(win), i = 0; |
| 4359 | 5420 l != NULL; |
| 5421 l = l->next, i++) { | |
| 5422 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5423 GaimConversation *conv = l->data; |
| 4359 | 5424 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
| 5425 | |
| 5426 if (!GTK_WIDGET_MAPPED(tab)) | |
| 5427 continue; | |
| 5428 | |
| 5429 if (first_visible) { | |
| 5430 first_visible = FALSE; | |
| 5431 | |
| 5432 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x; | |
| 5433 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y; | |
| 5434 } | |
| 5435 | |
| 5436 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
| 5437 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
| 5438 | |
| 5439 if (tab->allocation.x <= x_rel) { | |
| 5440 if (tab->allocation.x + tab->allocation.width <= x_rel) | |
| 5441 page_num = i + 1; | |
| 5442 else | |
| 5443 page_num = i; | |
| 5444 } | |
| 5445 else | |
| 5446 break; | |
| 5447 } | |
| 5448 else { | |
| 5449 if (tab->allocation.y <= y_rel) { | |
| 5450 if (tab->allocation.y + tab->allocation.height <= y_rel) | |
| 5451 page_num = i + 1; | |
| 5452 else | |
| 5453 page_num = i; | |
| 5454 } | |
| 5455 else | |
| 5456 break; | |
| 5457 } | |
| 5458 } | |
| 5459 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5460 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
| 4359 | 5461 return -1; |
| 5462 | |
| 5463 return page_num; | |
| 5464 } | |
| 5465 | |
| 5466 int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5467 gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y) |
| 4359 | 5468 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5469 GaimGtkWindow *gtkwin; |
| 4359 | 5470 GList *l; |
| 5471 gint nb_x, nb_y, x_rel, y_rel; | |
| 5472 GtkNotebook *notebook; | |
| 5473 GtkWidget *tab; | |
| 5474 gint i, page_num = 0; | |
| 5475 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5476 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5477 return -1; |
| 5478 | |
| 5479 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5480 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 5481 | |
| 5482 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 5483 x_rel = x - nb_x; | |
| 5484 y_rel = y - nb_y; | |
| 5485 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5486 for (l = gaim_conv_window_get_conversations(win), i = 0; |
| 4359 | 5487 l != NULL; |
| 5488 l = l->next, i++) { | |
| 5489 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5490 GaimConversation *conv = l->data; |
| 4359 | 5491 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
| 5492 | |
| 5493 if (!GTK_WIDGET_MAPPED(tab)) | |
| 5494 continue; | |
| 5495 | |
| 5496 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
| 5497 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
| 5498 | |
| 5499 if (tab->allocation.x <= x_rel) { | |
| 5500 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel) | |
| 5501 page_num = i + 1; | |
| 5502 else | |
| 5503 page_num = i; | |
| 5504 } | |
| 5505 else | |
| 5506 break; | |
| 5507 } | |
| 5508 else { | |
| 5509 if (tab->allocation.y <= y_rel) { | |
| 5510 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel) | |
| 5511 page_num = i + 1; | |
| 5512 else | |
| 5513 page_num = i; | |
| 5514 } | |
| 5515 else | |
| 5516 break; | |
| 5517 } | |
| 5518 } | |
| 5519 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5520 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
| 4359 | 5521 return -1; |
| 5522 | |
| 5523 return page_num; | |
| 5524 } | |
|
4940
3708545afe42
[gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents:
4939
diff
changeset
|
5525 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5526 static void |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5527 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5528 gpointer data) |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5529 { |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5530 if (value) |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5531 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5532 GDK_Escape, 0, TRUE); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5533 else |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5534 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5535 GDK_W, GDK_CONTROL_MASK, TRUE); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5536 } |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5537 |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5538 static void |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5539 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
|
5540 gpointer data) |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5541 { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5542 GList *l; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5543 GaimConversation *conv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5544 GaimGtkConversation *gtkconv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5545 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5546 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5547 conv = (GaimConversation *)l->data; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5548 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5549 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5550 continue; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5551 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5552 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5553 |
| 6440 | 5554 if (value) { |
| 5555 update_tab_icon(conv); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5556 gtk_widget_show(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5557 gtk_widget_show(gtkconv->menu_icon); |
| 6440 | 5558 } |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5559 else { |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5560 gtk_widget_hide(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5561 gtk_widget_hide(gtkconv->menu_icon); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5562 } |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5563 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5564 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5565 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5566 static void |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5567 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
|
5568 gpointer data) |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5569 { |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5570 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5571 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5572 GaimGtkConversation *gtkconv; |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5573 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5574 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5575 conv = (GaimConversation *)l->data; |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5576 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5577 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5578 continue; |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5579 |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5580 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5581 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5582 if (value) |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5583 gtk_widget_show(gtkconv->close); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5584 else |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5585 gtk_widget_hide(gtkconv->close); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5586 } |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5587 } |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5588 |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5589 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5590 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5591 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5592 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5593 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5594 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5595 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5596 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5597 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5598 conv = (GaimConversation *)l->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5599 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5600 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5601 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5602 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5603 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5604 |
| 7386 | 5605 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
|
5606 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5607 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5608 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5609 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5610 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5611 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5612 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5613 #ifdef USE_GTKSPELL |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5614 GList *cl; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5615 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5616 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5617 GtkSpell *spell; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5618 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5619 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5620 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5621 conv = (GaimConversation *)cl->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5622 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5623 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5624 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5625 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5626 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5627 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5628 if (value) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
5629 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5630 else { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5631 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry)); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5632 gtkspell_detach(spell); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5633 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5634 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5635 #endif |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5636 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5637 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5638 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5639 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5640 gpointer data) |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5641 { |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5642 GList *l; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5643 GtkPositionType pos; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5644 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5645 GaimGtkWindow *gtkwin; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5646 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5647 pos = GPOINTER_TO_INT(value); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5648 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5649 for (l = gaim_get_windows(); l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5650 win = (GaimConvWindow *)l->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5651 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5652 if (!GAIM_IS_GTK_WINDOW(win)) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5653 continue; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5654 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5655 gtkwin = GAIM_GTK_WINDOW(win); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5656 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5657 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5658 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5659 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5660 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5661 static void |
| 8456 | 5662 html_shortcuts_pref_cb(const char *name, GaimPrefType type, |
| 5663 gpointer value, gpointer data) | |
| 5664 { | |
| 5665 GList *l; | |
| 5666 GaimConversation *conv; | |
| 5667 GaimGtkConversation *gtkconv; | |
| 5668 | |
| 5669 for(l = gaim_get_conversations(); l != NULL; l = l->next) { | |
| 5670 conv = (GaimConversation *)l->data; | |
| 5671 | |
| 5672 if(!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 5673 continue; | |
| 5674 | |
| 5675 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5676 | |
| 5677 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 5678 (gboolean)GPOINTER_TO_INT(value)); | |
| 5679 } | |
| 5680 } | |
| 5681 | |
| 5682 static void | |
| 5683 smiley_shortcuts_pref_cb(const char *name, GaimPrefType type, | |
| 5684 gpointer value, gpointer data) | |
| 5685 { | |
| 5686 GList *l; | |
| 5687 GaimConversation *conv; | |
| 5688 GaimGtkConversation *gtkconv; | |
| 5689 | |
| 5690 for(l = gaim_get_conversations(); l != NULL; l = l->next) { | |
| 5691 conv = (GaimConversation *)l->data; | |
| 5692 | |
| 5693 if(!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 5694 continue; | |
| 5695 | |
| 5696 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5697 | |
| 5698 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 5699 (gboolean)GPOINTER_TO_INT(value)); | |
| 5700 } | |
| 5701 } | |
| 5702 | |
| 5703 static void | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5704 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type, |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5705 gpointer value, gpointer data) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5706 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5707 GList *l; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5708 GaimConversation *conv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5709 GaimGtkConversation *gtkconv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5710 GaimConvWindow *win; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5711 GaimGtkWindow *gtkwin; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5712 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5713 for (l = gaim_get_conversations(); l != NULL; l = l->next) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5714 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5715 conv = (GaimConversation *)l->data; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5716 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5717 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5718 continue; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5719 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5720 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5721 win = gaim_conversation_get_window(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5722 gtkwin = GAIM_GTK_WINDOW(win); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5723 |
| 7386 | 5724 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5725 gtk_check_menu_item_set_active( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5726 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5727 gtkconv->show_formatting_toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5728 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5729 if (gtkconv->show_formatting_toolbar) |
| 8317 | 5730 gtk_widget_show(gtkconv->toolbar); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5731 else |
| 8317 | 5732 gtk_widget_hide(gtkconv->toolbar); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5733 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5734 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5735 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5736 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5737 im_button_type_pref_cb(const char *name, GaimPrefType type, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5738 gpointer value, gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5739 { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5740 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5741 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5742 GaimGtkConversation *gtkconv; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5743 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5744 for (l = gaim_get_ims(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5745 conv = (GaimConversation *)l->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5746 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5747 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5748 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
| 8821 | 5749 gaim_gtkconv_update_buddy_icon(conv); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5750 } |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5751 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5752 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5753 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5754 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5755 gpointer value, gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5756 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5757 GList *l; |
| 8189 | 5758 GaimConversation *conv; |
| 5759 GaimGtkConversation *gtkconv; | |
| 5760 GaimConvWindow *win; | |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5761 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5762 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
|
5763 return; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5764 |
| 8189 | 5765 /* Set the "animate" flag for each icon based on the new preference */ |
| 5766 for (l = gaim_get_ims(); l != NULL; l = l->next) { | |
| 5767 conv = (GaimConversation *)l->data; | |
| 5768 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5769 gtkconv->u.im->animate = (gboolean)value; | |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5770 } |
| 8189 | 5771 |
| 5772 /* Now either stop or start animation for the active conversation in each window */ | |
| 5773 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
| 5774 win = (GaimConvWindow *)l->data; | |
| 5775 conv = gaim_conv_window_get_active_conversation(win); | |
| 5776 gaim_gtkconv_update_buddy_icon(conv); | |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5777 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5778 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5779 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5780 static void |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5781 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
|
5782 gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5783 { |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5784 GList *l; |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5785 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5786 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5787 GaimConversation *conv = l->data; |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5788 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5789 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5790 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon); |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5791 } |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5792 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5793 |
|
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5680
diff
changeset
|
5794 static void |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5795 chat_button_type_pref_cb(const char *name, GaimPrefType type, |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5796 gpointer value, gpointer data) |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5797 { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5798 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5799 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5800 GaimGtkConversation *gtkconv; |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5801 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5802 for (l = gaim_get_chats(); l != NULL; l = l->next) { |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5803 conv = (GaimConversation *)l->data; |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5804 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5805 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5806 setup_chat_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5807 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5808 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5809 |
|
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5810 static void |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5811 conv_placement_pref_cb(const char *name, GaimPrefType type, |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5812 gpointer value, gpointer data) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5813 { |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5814 GaimConvPlacementFunc func; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5815 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5816 if (strcmp(name, "/gaim/gtk/conversations/placement")) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5817 return; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5818 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5819 func = gaim_conv_placement_get_fnc(value); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5820 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5821 if (func == NULL) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5822 return; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5823 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5824 gaim_conv_placement_set_current_func(func); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5825 } |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5826 |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5827 void * |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5828 gaim_gtk_conversations_get_handle(void) |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5829 { |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5830 static int handle; |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5831 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5832 return &handle; |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5833 } |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5834 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5835 void |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5836 gaim_gtk_conversations_init(void) |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5837 { |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5838 void *handle = gaim_gtk_conversations_get_handle(); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5839 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5840 /* Conversations */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5841 gaim_prefs_add_none("/gaim/gtk/conversations"); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5842 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
|
5843 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5844 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5845 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5846 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5847 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5848 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5849 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5850 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5851 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE); |
| 8944 | 5852 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_formatting", FALSE); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5853 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5854 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5855 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5856 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5857 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5858 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5859 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
|
5860 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last"); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5861 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5862 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5863 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5864 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5865 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5866 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
|
5867 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5868 /* Conversations -> Chat */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5869 gaim_prefs_add_none("/gaim/gtk/conversations/chat"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5870 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5871 GAIM_BUTTON_TEXT_IMAGE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5872 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5873 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
|
5874 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5875 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5876 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5877 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5878 /* Conversations -> IM */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5879 gaim_prefs_add_none("/gaim/gtk/conversations/im"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5880 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5881 GAIM_BUTTON_TEXT_IMAGE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5882 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
|
5883 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
|
5884 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
|
5885 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5886 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5887 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5888 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5889 /* Connect callbacks. */ |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5890 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes", |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5891 escape_closes_pref_cb, NULL); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5892 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs", |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5893 icons_on_tabs_pref_cb, NULL); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5894 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5895 close_on_tabs_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5896 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5897 show_timestamps_pref_cb, NULL); |
| 8456 | 5898 gaim_prefs_connect_callback("/gaim/gtk/conversations/html_shortcuts", |
| 5899 html_shortcuts_pref_cb, NULL); | |
| 5900 gaim_prefs_connect_callback("/gaim/gtk/conversations/smiley_shortcuts", | |
| 5901 smiley_shortcuts_pref_cb, NULL); | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5902 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar", |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5903 show_formatting_toolbar_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5904 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5905 spellcheck_pref_cb, NULL); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5906 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5907 tab_side_pref_cb, NULL); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5908 |
|
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5909 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement", |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5910 conv_placement_pref_cb, NULL); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5911 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement"); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5912 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5913 |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5914 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5915 /* IM callbacks */ |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5916 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5917 im_button_type_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5918 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5919 animate_buddy_icons_pref_cb, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5920 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5921 show_buddy_icons_pref_cb, NULL); |
|
5675
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 /* Chat callbacks */ |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5925 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5926 chat_button_type_pref_cb, NULL); |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5927 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5928 /********************************************************************** |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5929 * Register signals |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5930 **********************************************************************/ |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5931 gaim_signal_register(handle, "conversation-drag-ended", |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5932 gaim_marshal_VOID__POINTER_POINTER, NULL, 2, |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5933 gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5934 GAIM_SUBTYPE_CONV_WINDOW), |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5935 gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5936 GAIM_SUBTYPE_CONV_WINDOW)); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5937 } |
|
8582
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5938 |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5939 void |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5940 gaim_gtk_conversations_uninit(void) |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5941 { |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5942 gaim_signals_unregister_by_instance(gaim_gtk_conversations_get_handle()); |
|
d7c85220c685
[gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents:
8573
diff
changeset
|
5943 } |
