Mercurial > pidgin
annotate src/gtkconv.c @ 8573:7dcd6f26e4a7
[gaim-migrate @ 9321]
" This patch reimplements the system log. It writes
system log to
~/.gaim/logs/<protocol>/<username>/.system/<timestamp>.(txt|html),
where <timestamp> is the time that the account
<username> with <protocol> signs on. Nathan (faceprint)
and LSchiere suggested this logging scheme. No code is
currently written to read the old system logs.
Note that if you change the logging format, you need to
re-login the accounts for the change to take effect."
--Ka-Hing (javabsp) Cheung
who continues:
"Now this one applies, also contains a rider patch that, if
you enable sound for "Someone says your name in chat", it
will not play a sound if the message is a system message,
like if jabber chat tells you that "*** becomes available"
and *** is you, it won't play a sound."
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Sat, 03 Apr 2004 18:34:29 +0000 |
| parents | fcb03dabbc53 |
| children | d7c85220c685 |
| rev | line source |
|---|---|
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
1 /** |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2 * @file gtkconv.h GTK+ Conversation API |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
3 * @ingroup gtkui |
| 4359 | 4 * |
| 8046 | 5 * Gaim is the legal property of its developers, whose names are too numerous |
| 6 * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 7 * source distribution. | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
8 * |
| 4359 | 9 * This program is free software; you can redistribute it and/or modify |
| 10 * it under the terms of the GNU General Public License as published by | |
| 11 * the Free Software Foundation; either version 2 of the License, or | |
| 12 * (at your option) any later version. | |
| 13 * | |
| 14 * This program is distributed in the hope that it will be useful, | |
| 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 17 * GNU General Public License for more details. | |
| 18 * | |
| 19 * You should have received a copy of the GNU General Public License | |
| 20 * along with this program; if not, write to the Free Software | |
| 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 22 * | |
| 23 */ | |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
24 #include "gtkinternal.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
25 |
| 4359 | 26 #ifndef _WIN32 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
27 # include <X11/Xlib.h> |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
28 #endif |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
29 |
| 4359 | 30 #ifdef USE_GTKSPELL |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
31 # include <gtkspell/gtkspell.h> |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
32 # ifdef _WIN32 |
|
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
33 # include "wspell.h" |
|
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
34 # endif |
| 4359 | 35 #endif |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
36 |
| 4359 | 37 #include <gdk/gdkkeysyms.h> |
| 6982 | 38 #include <locale.h> |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
39 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
40 #include "debug.h" |
| 6982 | 41 #include "imgstore.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
42 #include "log.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
43 #include "multi.h" |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
44 #include "notify.h" |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
45 #include "prefs.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
46 #include "prpl.h" |
| 6038 | 47 #include "request.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
48 #include "sound.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
49 #include "util.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
50 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
51 #include "dnd-hints.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
52 #include "gtkblist.h" |
| 5717 | 53 #include "gtkconv.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
54 #include "gtkimhtml.h" |
| 8317 | 55 #include "gtkimhtmltoolbar.h" |
| 7431 | 56 #include "gtklog.h" |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
57 #include "gtkpounce.h" |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
58 #include "gtkprivacy.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
59 #include "gtkutils.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
60 #include "stock.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
61 |
| 5717 | 62 #include "ui.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
63 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
64 /* XXX */ |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
65 #include "gaim.h" |
| 4359 | 66 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
67 #define AUTO_RESPONSE "<AUTO-REPLY> : " |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
68 |
| 7990 | 69 #define SEND_COLOR "#16569E" |
| 7855 | 70 #define RECV_COLOR "#A82F2F" |
| 7854 | 71 |
| 4359 | 72 static char nick_colors[][8] = { |
| 73 "#ba55d3", /* Medium Orchid */ | |
| 74 "#ee82ee", /* Violet */ | |
| 75 "#c715b4", /* Medium Violet Red */ | |
| 76 "#ff69b4", /* Hot Pink */ | |
| 77 "#ff6347", /* Tomato */ | |
| 78 "#fa8c00", /* Dark Orange */ | |
| 79 "#fa8072", /* Salmon */ | |
| 80 "#b22222", /* Fire Brick */ | |
| 81 "#f4a460", /* Sandy Brown */ | |
| 82 "#cd5c5c", /* Indian Red */ | |
| 83 "#bc8f8f", /* Rosy Brown */ | |
| 84 "#f0e68c", /* Khaki */ | |
| 85 "#bdb76b", /* Dark Khaki */ | |
| 86 "#228b22", /* Forest Green */ | |
| 87 "#9acd32", /* Yellow Green */ | |
| 88 "#32cd32", /* Lime Green */ | |
| 7755 | 89 "#3cb371", /* Medium Sea Green (Medium Sea Green?! What are we women?!) */ |
| 4359 | 90 "#2e8b57", /* Sea Green */ |
| 91 "#8fbc8f", /* Dark Sea Green */ | |
| 92 "#66cdaa", /* Medium Aquamarine */ | |
| 93 "#5f9ea0", /* Cadet Blue */ | |
| 94 "#48d1cc", /* Medium Turquoise */ | |
| 95 "#00ced1", /* Dark Turquoise */ | |
| 96 "#4682b4", /* Stell Blue */ | |
| 97 "#00bfff", /* Deep Sky Blue */ | |
| 98 "#1690ff", /* Dodger Blue */ | |
| 99 "#4169ff", /* Royal Blue */ | |
| 100 "#6a5acd", /* Slate Blue */ | |
| 101 "#6495ed", /* Cornflower Blue */ | |
| 102 "#708090", /* Slate gray */ | |
|
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
103 "#2f4f4f", /* Dark Slate Gray */ |
|
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
104 "#ff8c00", /* Dark Orange */ |
| 8535 | 105 "#006400", /* DarkGreen */ |
| 106 "#8b4513", /* SaddleBrown */ | |
| 107 "#8b8989", /* snow4 */ | |
| 108 "#7d26cd", /* purple3 */ | |
| 4359 | 109 }; |
| 6291 | 110 |
| 4359 | 111 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors)) |
| 112 | |
| 113 #define SCALE(x) \ | |
| 114 ((gdk_pixbuf_animation_get_width(x) <= 48 && \ | |
| 115 gdk_pixbuf_animation_get_height(x) <= 48) ? 48 : 50) | |
| 116 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
117 typedef struct |
| 4359 | 118 { |
| 119 GtkWidget *window; | |
| 120 | |
| 121 GtkWidget *entry; | |
| 122 GtkWidget *message; | |
| 123 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
124 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
125 |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
126 } InviteBuddyInfo; |
| 4359 | 127 |
| 128 static GtkWidget *invite_dialog = NULL; | |
| 129 | |
| 130 /* Prototypes. <-- because Paco-Paco hates this comment. */ | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
131 static void got_typing_keypress(GaimConversation *conv, gboolean first); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
132 static GList *generate_invite_user_names(GaimConnection *gc); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
133 static void add_chat_buddy_common(GaimConversation *conv, |
| 4359 | 134 const char *name, int pos); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
135 static void tab_complete(GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
136 static void update_typing_icon(GaimConversation *conv); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
137 static gboolean update_send_as_selection(GaimConvWindow *win); |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
138 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
|
139 static void save_convo(GtkWidget *save, GaimConversation *c); |
| 4359 | 140 |
| 141 /************************************************************************** | |
| 142 * Callbacks | |
| 143 **************************************************************************/ | |
| 144 static void | |
| 6038 | 145 do_save_convo(GtkWidget *wid) |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
146 { |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
147 GaimConversation *conv; |
| 8557 | 148 const char *name; |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
149 const char *filename; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
150 FILE *fp; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
151 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
152 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
|
153 "gaim_conversation"); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
154 |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
155 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
156 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
157 if (!((gaim_conversation_get_type(conv) != GAIM_CONV_CHAT && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
158 g_list_find(gaim_get_ims(), conv)) || |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
159 (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
160 g_list_find(gaim_get_chats(), conv)))) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
161 filename = NULL; |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
162 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
163 gtk_widget_destroy(wid); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
164 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
165 if (filename == NULL) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
166 return; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
167 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
168 if ((fp = fopen(filename, "w+")) == NULL) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
169 return; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
170 |
| 8557 | 171 name = gaim_conversation_get_name(conv); |
| 172 | |
| 173 fprintf(fp, _("<h1>Conversation with %s</h1>\n"), name); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
174 fprintf(fp, "%s", conv->history->str); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
175 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
176 fclose(fp); |
|
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 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
179 static void |
| 6038 | 180 do_check_save_convo(GObject *obj, GtkWidget *wid) |
| 181 { | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
182 const char *filename; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
183 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
184 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); |
| 6038 | 185 |
| 186 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid))) | |
| 187 return; | |
| 188 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
189 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
190 { |
| 6038 | 191 gaim_request_yes_no(NULL, NULL, _("That file already exists"), |
| 192 _("Would you like to overwrite it?"), 1, wid, | |
| 193 G_CALLBACK(do_save_convo), NULL); | |
| 194 } | |
| 195 else | |
| 196 do_save_convo(wid); | |
| 197 } | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
198 |
| 4359 | 199 |
| 200 static gint | |
| 201 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d) | |
| 202 { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
203 GaimConvWindow *win = (GaimConvWindow *)d; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
204 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
205 gaim_conv_window_destroy(win); |
|
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
206 |
|
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
207 return TRUE; |
| 4359 | 208 } |
| 209 | |
| 210 static gint | |
| 211 close_conv_cb(GtkWidget *w, gpointer d) | |
| 212 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
213 GaimConversation *conv = (GaimConversation *)d; |
| 4359 | 214 |
| 215 gaim_conversation_destroy(conv); | |
|
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
216 |
|
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
217 return TRUE; |
| 4359 | 218 } |
| 219 | |
|
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
220 /* Courtesy of Galeon! */ |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
221 static void |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
222 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state) |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
223 { |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
224 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE) |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
225 gtk_widget_set_state(widget, GTK_STATE_NORMAL); |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
226 } |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
227 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
228 static void |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
229 default_formatize(GaimConversation *conv) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
230 { |
| 8061 | 231 GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv); |
| 232 GaimConnection *gc = gaim_conversation_get_gc(conv); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
233 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
234 if (gc && gc->flags & GAIM_CONNECTION_HTML) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
235 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
236 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) |
| 8061 | 237 gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry)); |
| 8481 | 238 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
239 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) |
| 8061 | 240 gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry)); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
241 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
242 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) |
| 8061 | 243 gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry)); |
| 8481 | 244 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
245 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") || |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
246 c->has_font) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
247 { |
| 8061 | 248 gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry), c->fontface); |
| 249 } | |
| 250 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
251 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
252 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
253 gtk_imhtml_font_set_size(GTK_IMHTML(c->entry), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
254 gaim_prefs_get_int("/gaim/gtk/conversations/font_size")); |
| 8061 | 255 } |
| 256 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
257 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
258 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
259 char *color = g_strdup_printf("#%02x%02x%02x", |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
260 c->fg_color.red / 256, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
261 c->fg_color.green / 256, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
262 c->fg_color.blue / 256); |
| 8061 | 263 gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color); |
| 264 g_free(color); | |
| 265 } | |
| 266 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
267 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
268 gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) |
|
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 char *color = g_strdup_printf("#%02x%02x%02x", |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
271 c->bg_color.red / 256, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
272 c->bg_color.green / 256, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
273 c->bg_color.blue / 256); |
| 8061 | 274 gtk_imhtml_toggle_backcolor(GTK_IMHTML(c->entry), color); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
275 g_free(color); |
| 8061 | 276 } |
| 277 } | |
| 278 } | |
| 279 | |
| 4359 | 280 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
281 send_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 282 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
283 GaimGtkConversation *gtkconv; |
| 8448 | 284 char *buf, *clean; |
| 4359 | 285 |
| 286 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
|
8329
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
287 |
| 8442 | 288 buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); |
| 8448 | 289 clean = gaim_markup_strip_html(buf); |
| 290 | |
| 4359 | 291 gtk_widget_grab_focus(gtkconv->entry); |
| 292 | |
| 8448 | 293 if (strlen(clean) == 0) { |
| 294 g_free(clean); | |
| 4359 | 295 g_free(buf); |
| 296 return; | |
| 297 } | |
| 298 | |
| 299 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
300 gaim_conv_im_send(GAIM_CONV_IM(conv), buf); |
| 8061 | 301 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
302 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf); |
| 4359 | 303 |
| 5629 | 304 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send")) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
305 gaim_conv_window_hide(gaim_conversation_get_window(conv)); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
306 |
| 4359 | 307 g_free(buf); |
| 8448 | 308 g_free(clean); |
| 4359 | 309 |
| 8061 | 310 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
| 311 default_formatize(conv); | |
| 4359 | 312 } |
| 313 | |
| 314 static void | |
| 7928 | 315 add_remove_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 316 { |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
317 GaimAccount *account; |
| 4359 | 318 const char *name; |
| 319 | |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
320 account = gaim_conversation_get_account(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
321 name = gaim_conversation_get_name(conv); |
| 7879 | 322 |
| 323 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 7859 | 324 GaimBuddy *b; |
| 325 | |
| 326 b = gaim_find_buddy(account, name); | |
| 327 if (b != NULL) | |
| 328 show_confirm_del(b); | |
| 329 else if (account != NULL && gaim_account_is_connected(account)) | |
| 330 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL); | |
| 7879 | 331 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
| 7859 | 332 GaimChat *c; |
| 333 | |
| 334 c = gaim_blist_find_chat(account, name); | |
| 335 if (c != NULL) | |
| 336 show_confirm_del_blist_chat(c); | |
| 337 else if (account != NULL && gaim_account_is_connected(account)) | |
| 338 gaim_blist_request_add_chat(account, NULL, NULL); | |
| 339 } | |
| 4359 | 340 |
| 341 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 342 } | |
| 343 | |
| 7975 | 344 static void chat_do_info(GaimConversation *conv, const char *who) |
| 345 { | |
| 346 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 347 GaimConnection *gc; | |
| 348 | |
| 349 if ((gc = gaim_conversation_get_gc(conv))) { | |
| 350 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 351 | |
| 352 /* | |
| 353 * If there are special needs for getting info on users in | |
| 354 * buddy chat "rooms"... | |
| 355 */ | |
| 356 if (prpl_info->get_cb_info != NULL) | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
357 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
358 prpl_info->get_cb_info(gc, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
359 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
360 } |
| 7975 | 361 else |
| 362 prpl_info->get_info(gc, who); | |
| 363 } | |
| 364 } | |
| 365 | |
| 366 | |
| 4359 | 367 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
368 info_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 369 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
370 GaimGtkConversation *gtkconv; |
| 4359 | 371 |
| 372 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 373 | |
| 7879 | 374 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 375 serv_get_info(gaim_conversation_get_gc(conv), | |
| 376 gaim_conversation_get_name(conv)); | |
| 377 | |
| 378 gtk_widget_grab_focus(gtkconv->entry); | |
| 379 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 380 /* Get info of the person currently selected in the GtkTreeView */ | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
381 GaimGtkChatPane *gtkchat; |
| 4359 | 382 GtkTreeIter iter; |
| 383 GtkTreeModel *model; | |
| 384 GtkTreeSelection *sel; | |
| 385 const char *name; | |
| 386 | |
| 387 gtkchat = gtkconv->u.chat; | |
| 388 | |
| 389 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
| 390 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
| 391 | |
| 392 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
| 393 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1); | |
| 394 else | |
| 395 return; | |
| 396 | |
| 7975 | 397 chat_do_info(conv, name); |
| 4359 | 398 } |
| 399 } | |
| 400 | |
| 401 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
402 warn_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 403 { |
| 404 show_warn_dialog(gaim_conversation_get_gc(conv), | |
| 7879 | 405 gaim_conversation_get_name(conv)); |
| 4359 | 406 |
| 407 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 408 } | |
| 409 | |
| 410 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
411 block_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 412 { |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
413 GaimAccount *account; |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
414 |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
415 account = gaim_conversation_get_account(conv); |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
416 |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
417 if (account != NULL && gaim_account_is_connected(account)) |
|
6399
d726a36628e8
[gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents:
6398
diff
changeset
|
418 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv)); |
| 4359 | 419 |
| 420 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 421 } | |
| 422 | |
| 423 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
424 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info) |
| 4359 | 425 { |
| 426 const char *buddy, *message; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
427 GaimGtkConversation *gtkconv; |
| 4359 | 428 |
| 429 gtkconv = GAIM_GTK_CONVERSATION(info->conv); | |
| 430 | |
| 431 if (resp == GTK_RESPONSE_OK) { | |
| 432 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry)); | |
| 433 message = gtk_entry_get_text(GTK_ENTRY(info->message)); | |
| 434 | |
| 4793 | 435 if (!g_ascii_strcasecmp(buddy, "")) { |
| 4359 | 436 g_free(info); |
| 437 | |
| 438 return; | |
| 439 } | |
| 440 | |
| 441 serv_chat_invite(gaim_conversation_get_gc(info->conv), | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
442 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)), |
| 4359 | 443 message, buddy); |
| 444 } | |
| 445 | |
| 446 gtk_widget_destroy(invite_dialog); | |
| 447 invite_dialog = NULL; | |
| 448 | |
| 449 g_free(info); | |
| 450 } | |
| 451 | |
| 452 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
453 invite_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 454 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
455 InviteBuddyInfo *info = NULL; |
| 4359 | 456 |
| 457 if (invite_dialog == NULL) { | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
458 GaimConnection *gc; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
459 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
460 GaimGtkWindow *gtkwin; |
| 4359 | 461 GtkWidget *label; |
| 462 GtkWidget *vbox, *hbox; | |
| 463 GtkWidget *table; | |
| 464 GtkWidget *img; | |
| 465 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
466 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
467 GTK_ICON_SIZE_DIALOG); |
| 4359 | 468 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
469 info = g_new0(InviteBuddyInfo, 1); |
| 4359 | 470 info->conv = conv; |
| 471 | |
| 472 gc = gaim_conversation_get_gc(conv); | |
| 473 win = gaim_conversation_get_window(conv); | |
| 474 gtkwin = GAIM_GTK_WINDOW(win); | |
| 475 | |
| 476 /* Create the new dialog. */ | |
| 477 invite_dialog = gtk_dialog_new_with_buttons( | |
| 7859 | 478 _("Invite Buddy Into Chat Room"), |
| 7879 | 479 GTK_WINDOW(gtkwin->window), 0, |
| 480 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
| 4359 | 481 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); |
| 482 | |
| 483 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog), | |
| 484 GTK_RESPONSE_OK); | |
| 485 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6); | |
| 486 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE); | |
| 487 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE); | |
| 488 | |
| 489 /* Setup the outside spacing. */ | |
| 490 vbox = GTK_DIALOG(invite_dialog)->vbox; | |
| 491 | |
| 492 gtk_box_set_spacing(GTK_BOX(vbox), 12); | |
| 493 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); | |
| 494 | |
| 495 /* Setup the inner hbox and put the dialog's icon in it. */ | |
| 496 hbox = gtk_hbox_new(FALSE, 12); | |
| 497 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 498 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 499 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 500 | |
| 501 /* Setup the right vbox. */ | |
| 502 vbox = gtk_vbox_new(FALSE, 0); | |
| 503 gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 504 | |
| 505 /* Put our happy label in it. */ | |
| 506 label = gtk_label_new(_("Please enter the name of the user you wish " | |
| 507 "to invite, along with an optional invite " | |
| 508 "message.")); | |
| 509 gtk_widget_set_size_request(label, 350, -1); | |
| 510 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 511 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 512 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 513 | |
| 514 /* hbox for the table, and to give it some spacing on the left. */ | |
| 515 hbox = gtk_hbox_new(FALSE, 6); | |
| 516 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 517 | |
| 518 /* Setup the table we're going to use to lay stuff out. */ | |
| 519 table = gtk_table_new(2, 2, FALSE); | |
| 520 gtk_table_set_row_spacings(GTK_TABLE(table), 6); | |
| 521 gtk_table_set_col_spacings(GTK_TABLE(table), 6); | |
| 522 gtk_container_set_border_width(GTK_CONTAINER(table), 12); | |
| 523 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | |
| 524 | |
| 525 /* Now the Buddy label */ | |
| 526 label = gtk_label_new(NULL); | |
| 527 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:")); | |
| 528 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 529 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | |
| 530 | |
| 531 /* Now the Buddy drop-down entry field. */ | |
| 532 info->entry = gtk_combo_new(); | |
| 533 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE); | |
| 534 gtk_entry_set_activates_default( | |
| 535 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE); | |
| 536 | |
| 537 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1); | |
| 538 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry); | |
| 539 | |
| 540 /* Fill in the names. */ | |
| 541 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry), | |
| 542 generate_invite_user_names(gc)); | |
| 543 | |
| 544 | |
| 545 /* Now the label for "Message" */ | |
| 546 label = gtk_label_new(NULL); | |
| 547 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:")); | |
| 548 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 549 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); | |
| 550 | |
| 551 | |
| 552 /* And finally, the Message entry field. */ | |
| 553 info->message = gtk_entry_new(); | |
| 554 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE); | |
| 555 | |
| 556 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2); | |
| 557 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message); | |
| 558 | |
| 559 /* Connect the signals. */ | |
| 560 g_signal_connect(G_OBJECT(invite_dialog), "response", | |
| 561 G_CALLBACK(do_invite), info); | |
| 562 } | |
| 563 | |
| 564 gtk_widget_show_all(invite_dialog); | |
| 565 | |
| 566 if (info != NULL) | |
| 567 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry); | |
| 568 } | |
| 569 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
570 static void |
| 7748 | 571 menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget) |
| 572 { | |
| 573 show_im_dialog(); | |
| 574 } | |
| 575 | |
| 576 static void | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
577 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
578 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
579 GaimConvWindow *win = (GaimConvWindow *)data; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
580 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
581 save_convo(NULL, gaim_conv_window_get_active_conversation(win)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
582 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
583 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
584 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
585 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
586 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
587 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
588 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
589 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
590 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
591 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
592 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
593 gaim_conversation_get_account(conv)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
594 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
595 |
| 7295 | 596 struct _search { |
| 597 GaimGtkConversation *gtkconv; | |
| 598 GtkWidget *entry; | |
| 599 }; | |
| 600 | |
| 7929 | 601 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s) |
| 7295 | 602 { |
| 7929 | 603 switch (resp) { |
| 604 case GTK_RESPONSE_OK: | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
605 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
606 gtk_entry_get_text(GTK_ENTRY(s->entry))); |
| 7929 | 607 break; |
| 608 | |
| 609 case GTK_RESPONSE_DELETE_EVENT: | |
| 610 case GTK_RESPONSE_CLOSE: | |
| 611 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); | |
| 612 gtk_widget_destroy(s->gtkconv->dialogs.search); | |
| 613 s->gtkconv->dialogs.search = NULL; | |
| 614 g_free(s); | |
| 615 break; | |
| 616 } | |
| 7295 | 617 } |
| 618 | |
| 619 static void | |
| 7751 | 620 menu_find_cb(gpointer data, guint action, GtkWidget *widget) |
| 7295 | 621 { |
| 622 GaimConvWindow *win = (GaimConvWindow *)data; | |
| 623 GaimConversation *conv = gaim_conv_window_get_active_conversation(win); | |
| 624 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); | |
| 625 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7929 | 626 GtkWidget *hbox; |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
627 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
628 GTK_ICON_SIZE_DIALOG); |
| 7929 | 629 GtkWidget *label; |
| 7295 | 630 struct _search *s; |
| 631 | |
| 7798 | 632 if (gtkconv->dialogs.search) { |
| 633 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search)); | |
| 7295 | 634 return; |
| 7798 | 635 } |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
636 |
| 7295 | 637 s = g_malloc(sizeof(struct _search)); |
| 638 s->gtkconv = gtkconv; | |
| 7929 | 639 |
| 640 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"), | |
| 641 GTK_WINDOW(gtkwin->window), GTK_DIALOG_DESTROY_WITH_PARENT, | |
| 642 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | |
| 643 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
644 gtk_dialog_set_default_response(GTK_DIALOG(gtkconv->dialogs.search), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
645 GTK_RESPONSE_OK); |
| 7929 | 646 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", |
| 647 G_CALLBACK(do_search_cb), s); | |
| 648 | |
| 649 gtk_container_set_border_width(GTK_CONTAINER(gtkconv->dialogs.search), 6); | |
| 650 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); | |
| 651 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE); | |
| 652 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
|
653 gtk_container_set_border_width( |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
654 GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6); |
| 7929 | 655 |
| 656 hbox = gtk_hbox_new(FALSE, 12); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
657 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
658 hbox); |
| 7929 | 659 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
| 660 | |
| 661 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
662 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
663 GTK_RESPONSE_OK, FALSE); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
664 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
665 label = gtk_label_new(NULL); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
666 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); |
| 7929 | 667 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 668 | |
| 669 s->entry = gtk_entry_new(); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
670 gtk_entry_set_activates_default(GTK_ENTRY(s->entry), TRUE); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
671 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(s->entry)); |
| 7929 | 672 g_signal_connect(G_OBJECT(s->entry), "changed", |
| 673 G_CALLBACK(gaim_gtk_set_sensitive_if_input), | |
| 674 gtkconv->dialogs.search); | |
| 675 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
|
676 |
| 7295 | 677 gtk_widget_show_all(gtkconv->dialogs.search); |
| 7929 | 678 gtk_widget_grab_focus(s->entry); |
| 7295 | 679 } |
| 680 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
681 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
682 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
683 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
684 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
685 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
686 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
687 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
688 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
689 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
690 gaim_conversation_get_name(conv), NULL); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
691 } |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
692 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
693 #if 0 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
694 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
695 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
696 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
697 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
698 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
699 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
700 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
701 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
702 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
703 |
| 7927 | 704 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link), |
| 705 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link))); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
706 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
707 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
708 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
709 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
710 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
711 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
712 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
713 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
714 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
715 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
716 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
717 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
718 } |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
719 #endif |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
720 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
721 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
722 menu_alias_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
723 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
724 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
725 GaimConversation *conv; |
| 7879 | 726 GaimAccount *account; |
| 727 const char *name; | |
| 728 | |
| 729 conv = gaim_conv_window_get_active_conversation(win); | |
| 730 account = gaim_conversation_get_account(conv); | |
| 731 name = gaim_conversation_get_name(conv); | |
| 732 | |
| 733 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 734 GaimBuddy *b; | |
| 735 | |
| 736 b = gaim_find_buddy(account, name); | |
| 737 if (b != NULL) | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
738 alias_dialog_bud(b); |
| 7879 | 739 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
| 740 GaimChat *c; | |
| 741 | |
| 742 c = gaim_blist_find_chat(account, name); | |
| 743 if (c != NULL) | |
| 744 alias_dialog_blist_chat(c); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
745 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
746 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
747 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
748 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
749 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
750 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
751 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
752 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
753 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
754 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
755 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
756 info_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
757 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
758 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
759 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
760 menu_invite_cb(gpointer data, guint action, GtkWidget *widget) |
|
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 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
763 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
764 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
765 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
766 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
767 invite_cb(NULL, conv); |
|
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 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
770 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
771 menu_warn_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
772 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
773 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
774 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
775 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
776 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
777 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
778 warn_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
779 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
780 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
781 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
782 menu_block_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
783 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
784 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
785 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
786 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
787 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
788 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
789 block_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
790 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
791 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
792 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
793 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
794 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
795 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
796 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
797 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
798 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
799 |
| 7928 | 800 add_remove_cb(NULL, conv); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
801 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
802 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
803 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
804 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
805 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
806 GaimConvWindow *win = (GaimConvWindow *)data; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
807 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
808 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
|
809 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
810 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
811 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
812 menu_logging_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
813 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
814 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
815 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
816 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
817 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
818 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
819 if (conv == NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
820 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
821 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
822 gaim_conversation_set_logging(conv, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
823 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); |
|
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 |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
827 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
828 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
829 GaimConvWindow *win = (GaimConvWindow *)data; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
830 GaimConversation *conv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
831 GaimGtkConversation *gtkconv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
832 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
833 conv = gaim_conv_window_get_active_conversation(win); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
834 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
835 if (conv == NULL) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
836 return; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
837 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
838 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
839 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
840 gtkconv->show_formatting_toolbar = |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
841 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
842 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
843 if (gtkconv->show_formatting_toolbar) |
| 8317 | 844 gtk_widget_show(gtkconv->toolbar); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
845 else |
| 8317 | 846 gtk_widget_hide(gtkconv->toolbar); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
847 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
848 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
849 static void |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
850 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
851 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
852 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
853 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
854 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
855 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
856 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
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 if (!conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
859 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
860 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
861 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
862 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
863 gtkconv->make_sound = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
864 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
865 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
866 |
| 7961 | 867 static void |
| 868 chat_do_im(GaimConversation *conv, const char *who) | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
869 { |
| 7961 | 870 GaimPluginProtocolInfo *prpl_info = NULL; |
| 871 char *real_who; | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
872 GaimConversation *conv2; |
| 7961 | 873 GaimAccount *account; |
| 874 | |
| 875 account = gaim_conversation_get_account(conv); | |
| 876 | |
| 877 if(account && account->gc) | |
| 878 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl); | |
| 879 | |
| 880 if(prpl_info && prpl_info->get_cb_real_name) | |
| 881 real_who = prpl_info->get_cb_real_name(account->gc, | |
| 882 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); | |
| 883 else | |
| 884 real_who = g_strdup(who); | |
| 885 | |
| 886 if(!real_who) | |
| 887 return; | |
| 888 | |
| 889 conv2 = gaim_find_conversation_with_account(real_who, account); | |
| 890 | |
| 891 if (conv2 != NULL) | |
| 892 gaim_conv_window_show(gaim_conversation_get_window(conv2)); | |
| 893 else | |
| 894 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who); | |
| 895 | |
| 896 g_free(real_who); | |
| 897 } | |
| 898 | |
| 899 | |
| 900 static void | |
| 901 chat_im_button_cb(GtkWidget *widget, GaimConversation *conv) | |
| 902 { | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
903 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
904 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
905 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
906 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
907 GtkTreeSelection *sel; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
908 const char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
909 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
910 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
911 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
912 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
913 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
914 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
915 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
916 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
917 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
|
918 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
919 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
920 |
| 7961 | 921 chat_do_im(conv, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
922 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
923 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
924 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
925 ignore_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
926 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
927 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
928 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
929 GaimConvChat *chat; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
930 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
931 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
932 GtkTreeSelection *sel; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
933 const char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
934 int pos; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
935 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
936 chat = GAIM_CONV_CHAT(conv); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
937 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
938 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
939 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
940 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
941 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
942 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
943 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
944 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
|
945 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
946 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
947 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
948 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
949 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
950 pos = g_list_index(gaim_conv_chat_get_users(chat), name); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
951 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
952 if (gaim_conv_chat_is_user_ignored(chat, name)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
953 gaim_conv_chat_unignore(chat, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
954 else |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
955 gaim_conv_chat_ignore(chat, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
956 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
957 add_chat_buddy_common(conv, name, pos); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
958 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
959 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
960 static void |
| 7398 | 961 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv) |
| 962 { | |
| 963 const char *who = g_object_get_data(G_OBJECT(w), "user_data"); | |
| 964 | |
| 965 chat_do_im(conv, who); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
966 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
967 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
968 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
969 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
970 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
971 char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
972 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
973 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
974 |
| 7975 | 975 chat_do_info(conv, who); |
|
5908
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 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
978 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
979 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
980 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
981 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
982 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
983 char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
984 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
985 gc = gaim_conversation_get_gc(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
986 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
987 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
988 if (gc != NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
989 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
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 /* |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
992 * 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
|
993 */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
994 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
995 if (prpl_info->get_cb_away != NULL) |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
996 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
997 prpl_info->get_cb_away(gc, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
998 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
999 } |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1000 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1001 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1002 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1003 static void |
| 7928 | 1004 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv) |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1005 { |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1006 GaimAccount *account; |
| 6695 | 1007 GaimBuddy *b; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1008 char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1009 |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1010 account = gaim_conversation_get_account(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1011 name = g_object_get_data(G_OBJECT(w), "user_data"); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1012 b = gaim_find_buddy(account, name); |
|
5908
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 if (b != NULL) |
| 5975 | 1015 show_confirm_del(b); |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1016 else if (account != NULL && gaim_account_is_connected(account)) |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1017 gaim_blist_request_add_buddy(account, name, NULL, NULL); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1018 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1019 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1020 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1021 |
| 8143 | 1022 static GtkWidget * |
| 1023 create_chat_menu(GaimConversation *conv, gchar *who, | |
| 1024 GaimPluginProtocolInfo *prpl_info, GaimConnection *gc) | |
| 1025 { | |
| 1026 static GtkWidget *menu = NULL; | |
| 1027 GtkWidget *button; | |
| 1028 | |
| 1029 /* | |
| 1030 * If a menu already exists, destroy it before creating a new one, | |
| 1031 * thus freeing-up the memory it occupied. | |
| 1032 */ | |
| 1033 if (menu) | |
| 1034 gtk_widget_destroy(menu); | |
| 1035 | |
| 1036 menu = gtk_menu_new(); | |
| 1037 | |
| 1038 button = gtk_menu_item_new_with_label(_("IM")); | |
| 1039 g_signal_connect(G_OBJECT(button), "activate", | |
| 1040 G_CALLBACK(menu_chat_im_cb), conv); | |
| 1041 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1042 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1043 gtk_widget_show(button); | |
| 1044 | |
| 1045 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who)) | |
| 1046 button = gtk_menu_item_new_with_label(_("Un-Ignore")); | |
| 1047 else | |
| 1048 button = gtk_menu_item_new_with_label(_("Ignore")); | |
| 1049 | |
| 1050 g_signal_connect(G_OBJECT(button), "activate", | |
| 1051 G_CALLBACK(ignore_cb), conv); | |
| 1052 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1053 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1054 gtk_widget_show(button); | |
| 1055 | |
| 8170 | 1056 if (gc && (prpl_info->get_info || prpl_info->get_cb_info)) { |
| 8143 | 1057 button = gtk_menu_item_new_with_label(_("Info")); |
| 1058 g_signal_connect(G_OBJECT(button), "activate", | |
| 1059 G_CALLBACK(menu_chat_info_cb), conv); | |
| 1060 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1061 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1062 gtk_widget_show(button); | |
| 1063 } | |
| 1064 | |
| 1065 if (gc && prpl_info->get_cb_away) { | |
| 1066 button = gtk_menu_item_new_with_label(_("Get Away Msg")); | |
| 1067 g_signal_connect(G_OBJECT(button), "activate", | |
| 1068 G_CALLBACK(menu_chat_get_away_cb), conv); | |
| 1069 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1070 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1071 gtk_widget_show(button); | |
| 1072 } | |
| 1073 | |
| 8170 | 1074 /* XXX: jabber can only add buddies from here in certain circumstances */ |
| 8143 | 1075 /* Added by Jonas <jonas@birme.se> */ |
| 1076 if (gc) { | |
| 1077 if (gaim_find_buddy(gc->account, who)) | |
| 1078 button = gtk_menu_item_new_with_label(_("Remove")); | |
| 1079 else | |
| 1080 button = gtk_menu_item_new_with_label(_("Add")); | |
| 1081 | |
| 1082 g_signal_connect(G_OBJECT(button), "activate", | |
| 1083 G_CALLBACK(menu_chat_add_remove_cb), conv); | |
| 1084 | |
| 1085 g_object_set_data(G_OBJECT(button), "user_data", who); | |
| 1086 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 1087 gtk_widget_show(button); | |
| 1088 } | |
| 1089 /* End Jonas */ | |
| 1090 | |
| 1091 return menu; | |
| 1092 } | |
| 1093 | |
| 1094 | |
| 1095 static gint | |
| 1096 gtkconv_chat_popup_menu_cb(GtkWidget *widget, GaimConversation *conv) | |
| 1097 { | |
| 1098 GaimGtkConversation *gtkconv; | |
| 1099 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 1100 GaimGtkChatPane *gtkchat; | |
| 1101 GaimConnection *gc; | |
| 1102 GaimAccount *account; | |
| 1103 GtkTreeSelection *sel; | |
| 1104 GtkTreeIter iter; | |
| 1105 GtkTreeModel *model; | |
| 1106 GtkWidget *menu; | |
| 1107 gchar *who; | |
| 1108 | |
| 1109 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 1110 gtkchat = gtkconv->u.chat; | |
| 1111 account = gaim_conversation_get_account(conv); | |
| 1112 gc = account->gc; | |
| 1113 | |
| 1114 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
| 1115 | |
| 1116 if (gc != NULL) | |
| 1117 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 1118 | |
| 1119 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
| 1120 if(!gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
| 1121 return FALSE; | |
| 1122 | |
| 1123 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &who, -1); | |
| 1124 menu = create_chat_menu (conv, who, prpl_info, gc); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1125 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1126 gaim_gtk_treeview_popup_menu_position_func, widget, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1127 0, GDK_CURRENT_TIME); |
| 8143 | 1128 |
| 1129 return TRUE; | |
| 1130 } | |
| 1131 | |
| 1132 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1133 static gint |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1134 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1135 GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1136 { |
| 8143 | 1137 GaimGtkConversation *gtkconv; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1138 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1139 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1140 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1141 GaimAccount *account; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1142 GtkTreePath *path; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1143 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1144 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1145 GtkTreeViewColumn *column; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1146 gchar *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1147 int x, y; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1148 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1149 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1150 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1151 account = gaim_conversation_get_account(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1152 gc = account->gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1153 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1154 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1155 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1156 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
|
1157 event->x, event->y, &path, &column, &x, &y); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1158 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1159 if (path == NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1160 return FALSE; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1161 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1162 if (gc != NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1163 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1164 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1165 gtk_tree_selection_select_path(GTK_TREE_SELECTION( |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1166 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1167 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1168 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1169 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
|
1170 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1171 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { |
| 7398 | 1172 chat_do_im(conv, who); |
| 1173 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
| 8143 | 1174 GtkWidget *menu = create_chat_menu (conv, who, prpl_info, gc); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1175 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1176 event->button, event->time); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1177 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1178 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1179 return TRUE; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1180 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1181 |
| 8133 | 1182 static void |
| 1183 move_to_next_unread_tab(GaimConversation *conv) | |
| 1184 { | |
| 1185 GaimConversation *next_conv = NULL; | |
| 1186 GaimConvWindow *win; | |
| 1187 GList *l; | |
| 1188 int index, i; | |
| 1189 | |
| 1190 win = gaim_conversation_get_window(conv); | |
| 1191 index = gaim_conversation_get_index(conv); | |
| 1192 | |
| 1193 /* First check the tabs after this position. */ | |
| 1194 for (l = g_list_nth(gaim_conv_window_get_conversations(win), index); | |
| 1195 l != NULL; | |
| 1196 l = l->next) { | |
| 1197 | |
| 1198 next_conv = (GaimConversation *)l->data; | |
| 1199 | |
| 1200 if (gaim_conversation_get_unseen(next_conv) > 0) | |
| 1201 break; | |
| 1202 | |
| 1203 next_conv = NULL; | |
| 1204 } | |
| 1205 | |
| 1206 if (next_conv == NULL) { | |
| 1207 | |
| 1208 /* Now check before this position. */ | |
| 1209 for (l = gaim_conv_window_get_conversations(win), i = 0; | |
| 1210 l != NULL && i < index; | |
| 1211 l = l->next) { | |
| 1212 | |
| 1213 next_conv = (GaimConversation *)l->data; | |
| 1214 | |
| 1215 if (gaim_conversation_get_unseen(next_conv) > 0) | |
| 1216 break; | |
| 1217 | |
| 1218 next_conv = NULL; | |
| 1219 } | |
| 1220 | |
| 1221 if (next_conv == NULL) { | |
| 1222 /* Okay, just grab the next conversation tab. */ | |
| 1223 if (index == gaim_conv_window_get_conversation_count(win) - 1) | |
| 1224 next_conv = gaim_conv_window_get_conversation_at(win, 0); | |
| 1225 else | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1226 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1227 next_conv = gaim_conv_window_get_conversation_at(win, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1228 index + 1); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1229 } |
| 8133 | 1230 } |
| 1231 } | |
| 1232 | |
| 1233 if (next_conv != NULL && next_conv != conv) { | |
| 1234 gaim_conv_window_switch_conversation(win, | |
| 1235 gaim_conversation_get_index(next_conv)); | |
| 1236 } | |
| 1237 } | |
| 1238 | |
| 4359 | 1239 static gboolean |
| 8105 | 1240 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data) |
| 4359 | 1241 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1242 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1243 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1244 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1245 GaimGtkWindow *gtkwin; |
| 8105 | 1246 int numconvs; |
| 1247 int curconv; | |
| 1248 | |
| 1249 conv = (GaimConversation *)data; | |
| 1250 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 1251 win = gaim_conversation_get_window(conv); | |
| 1252 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1253 numconvs = gaim_conv_window_get_conversation_count(win); | |
| 1254 curconv = gaim_conversation_get_index(conv); | |
| 1255 | |
| 1256 /* If CTRL was held down... */ | |
| 1257 if (event->state & GDK_CONTROL_MASK) { | |
| 4359 | 1258 switch (event->keyval) { |
| 8105 | 1259 case GDK_Return: |
| 1260 case GDK_KP_Enter: | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1261 if (gaim_prefs_get_bool( |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1262 "/gaim/gtk/conversations/ctrl_enter_sends")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1263 { |
| 8105 | 1264 send_cb(NULL, conv); |
| 1265 | |
| 1266 return TRUE; | |
| 1267 } | |
| 1268 break; | |
| 1269 | |
| 4359 | 1270 case GDK_Up: |
| 1271 if (!conv->send_history) | |
| 1272 break; | |
| 1273 | |
| 1274 if (!conv->send_history->prev) { | |
| 1275 GtkTextIter start, end; | |
| 1276 | |
| 1277 if (conv->send_history->data) | |
| 1278 g_free(conv->send_history->data); | |
| 1279 | |
| 1280 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
| 1281 &start); | |
| 1282 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end); | |
| 1283 | |
| 1284 conv->send_history->data = | |
| 8506 | 1285 gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 1286 } |
| 8506 | 1287 |
| 4359 | 1288 if (conv->send_history->next && |
| 1289 conv->send_history->next->data) { | |
| 1290 | |
| 1291 conv->send_history = conv->send_history->next; | |
| 8061 | 1292 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1293 gtk_imhtml_append_text_with_images( |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1294 GTK_IMHTML(gtkconv->entry), conv->send_history->data, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1295 0, NULL); |
| 4359 | 1296 } |
| 1297 | |
| 8105 | 1298 return TRUE; |
| 4359 | 1299 break; |
| 1300 | |
| 1301 case GDK_Down: | |
| 1302 if (!conv->send_history) | |
| 1303 break; | |
| 1304 | |
| 8105 | 1305 if (conv->send_history->prev && |
| 1306 conv->send_history->prev->data) { | |
| 1307 | |
| 4359 | 1308 conv->send_history = conv->send_history->prev; |
| 8105 | 1309 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1310 gtk_imhtml_append_text_with_images( |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1311 GTK_IMHTML(gtkconv->entry), conv->send_history->data, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1312 0, NULL); |
| 4359 | 1313 } |
| 1314 | |
| 8105 | 1315 return TRUE; |
| 4359 | 1316 break; |
| 8105 | 1317 |
| 8108 | 1318 case GDK_Page_Down: |
| 8143 | 1319 case ']': |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1320 gaim_conv_window_switch_conversation(win, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1321 (curconv + 1) % numconvs); |
| 8105 | 1322 |
| 1323 return TRUE; | |
| 1324 break; | |
| 1325 | |
| 8108 | 1326 case GDK_Page_Up: |
| 8143 | 1327 case '[': |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1328 gaim_conv_window_switch_conversation(win, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1329 (curconv + numconvs - 1) % numconvs); |
| 8133 | 1330 |
| 1331 return TRUE; | |
| 1332 break; | |
| 1333 | |
| 8108 | 1334 case GDK_Tab: |
| 8133 | 1335 move_to_next_unread_tab(conv); |
| 8108 | 1336 |
| 1337 return TRUE; | |
| 1338 break; | |
| 1339 | |
| 1340 case 'l': | |
| 1341 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); | |
| 1342 g_string_free(conv->history, TRUE); | |
| 8229 | 1343 conv->history = NULL; |
| 8108 | 1344 |
| 1345 return TRUE; | |
| 1346 break; | |
| 1347 | |
| 1348 case 'z': | |
| 1349 gtk_window_iconify(GTK_WINDOW(gtkwin->window)); | |
| 8105 | 1350 |
| 1351 return TRUE; | |
| 1352 break; | |
| 1353 | |
| 1354 } /* End of switch */ | |
| 4359 | 1355 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1356 #if 0 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1357 if (gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")) { |
| 4359 | 1358 switch (event->keyval) { |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1359 |
| 8317 | 1360 |
| 4359 | 1361 } |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1362 } /* End of switch */ |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1363 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1364 if (gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")) { |
| 4359 | 1365 char buf[7]; |
| 1366 | |
| 1367 *buf = '\0'; | |
| 1368 | |
| 1369 switch (event->keyval) { | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1370 |
| 4359 | 1371 } |
| 1372 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1373 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1374 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1375 #endif |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1376 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1377 } |
| 8105 | 1378 /* If ALT (or whatever) was held down... */ |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1379 else if (event->state & GDK_MOD1_MASK) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1380 { |
| 8105 | 1381 /* XXX - Make sure the conv exists befeore switching to it */ |
| 1382 if (event->keyval > '0' && event->keyval <= '9') { | |
| 1383 int switchto = event->keyval - '1'; | |
| 1384 if (switchto < numconvs) | |
| 1385 gaim_conv_window_switch_conversation(win, switchto); | |
| 4359 | 1386 |
| 1387 return TRUE; | |
| 1388 } | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1389 } |
| 8105 | 1390 /* If neither CTRL nor ALT were held down... */ |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1391 else |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1392 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1393 switch (event->keyval) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1394 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1395 case GDK_Return: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1396 case GDK_KP_Enter: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1397 if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1398 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1399 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1400 send_cb(NULL, conv); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1401 return TRUE; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1402 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1403 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1404 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1405 case GDK_Tab: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1406 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1407 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/tab_completion")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1408 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1409 tab_complete(conv); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1410 return TRUE; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1411 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1412 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1413 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1414 case GDK_Page_Up: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1415 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml)); |
| 8105 | 1416 return TRUE; |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1417 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1418 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1419 case GDK_Page_Down: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1420 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml)); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1421 return TRUE; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1422 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1423 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1424 case GDK_F2: |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1425 gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps", |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1426 !gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1427 return TRUE; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1428 break; |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1429 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1430 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
1431 } |
| 4359 | 1432 |
| 1433 return FALSE; | |
| 1434 } | |
| 1435 | |
| 1436 /* | |
| 1437 * NOTE: | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1438 * 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
|
1439 * further. I have no idea *why* we need this, but we do ... It |
| 4359 | 1440 * 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
|
1441 * going all the way down to the notebook. I suspect a bug in |
| 4359 | 1442 * GtkTextView, but I'm not ready to point any fingers yet. |
| 1443 */ | |
| 1444 static gboolean | |
| 1445 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) | |
| 1446 { | |
| 1447 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
| 1448 /* Right single click */ | |
| 1449 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event"); | |
| 1450 | |
| 1451 return TRUE; | |
| 1452 } | |
| 1453 | |
| 1454 return FALSE; | |
| 1455 } | |
| 1456 | |
| 8173 | 1457 /* |
| 1458 * If someone tries to type into the conversation backlog of a | |
| 1459 * conversation window then we yank focus from the conversation backlog | |
| 1460 * and give it to the text entry box so that people can type | |
| 1461 * all the live long day and it will get entered into the entry box. | |
| 1462 */ | |
| 6057 | 1463 static gboolean |
| 8105 | 1464 refocus_entry_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) |
| 6057 | 1465 { |
| 1466 GaimGtkConversation *gtkconv = data; | |
| 1467 | |
| 8237 | 1468 /* If we have a valid key for the conversation display, then exit */ |
| 8224 | 1469 if ((event->state & GDK_CONTROL_MASK) || |
| 8237 | 1470 (event->keyval == GDK_F10) || |
| 1471 (event->keyval == GDK_Shift_L) || | |
| 1472 (event->keyval == GDK_Shift_R) || | |
| 1473 (event->keyval == GDK_Escape) || | |
| 8177 | 1474 (event->keyval == GDK_Up) || |
| 1475 (event->keyval == GDK_Down) || | |
| 1476 (event->keyval == GDK_Left) || | |
| 8191 | 1477 (event->keyval == GDK_Right) || |
| 1478 (event->keyval == GDK_Home) || | |
| 1479 (event->keyval == GDK_End)) | |
| 8177 | 1480 return FALSE; |
| 1481 | |
| 1482 if (event->type == GDK_KEY_RELEASE) | |
| 1483 gtk_widget_grab_focus(gtkconv->entry); | |
| 1484 | |
| 1485 gtk_widget_event(gtkconv->entry, (GdkEvent *)event); | |
| 1486 | |
| 1487 return TRUE; | |
| 6057 | 1488 } |
| 1489 | |
| 4359 | 1490 static void |
| 4673 | 1491 menu_conv_sel_send_cb(GObject *m, gpointer data) |
| 4359 | 1492 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1493 GaimConvWindow *win = g_object_get_data(m, "user_data"); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
1494 GaimAccount *account = g_object_get_data(m, "gaim_account"); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1495 GaimConversation *conv; |
| 8456 | 1496 GaimGtkConversation *gtkconv; |
| 1497 GaimPlugin *protocol; | |
| 4359 | 1498 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1499 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 1500 |
| 4491 | 1501 gaim_conversation_set_account(conv, account); |
| 8456 | 1502 |
| 1503 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 1504 protocol = gaim_find_prpl(conv->account->protocol_id); | |
| 1505 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), | |
| 1506 protocol->info->name); | |
| 4359 | 1507 } |
| 1508 | |
| 1509 static void | |
| 1510 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position, | |
| 1511 gchar *new_text, gint new_text_length, gpointer user_data) | |
| 1512 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1513 GaimConversation *conv = (GaimConversation *)user_data; |
| 4359 | 1514 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1515 g_return_if_fail(conv != NULL); |
| 4359 | 1516 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1517 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 1518 return; |
| 1519 | |
| 1520 got_typing_keypress(conv, (gtk_text_iter_is_start(position) && | |
| 1521 gtk_text_iter_is_end(position))); | |
| 1522 } | |
| 1523 | |
| 1524 static void | |
| 1525 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos, | |
| 1526 GtkTextIter *end_pos, gpointer user_data) | |
| 1527 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1528 GaimConversation *conv = (GaimConversation *)user_data; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1529 GaimConvIm *im; |
| 4359 | 1530 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1531 g_return_if_fail(conv != NULL); |
| 4359 | 1532 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1533 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 1534 return; |
| 1535 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1536 im = GAIM_CONV_IM(conv); |
| 4359 | 1537 |
| 1538 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) { | |
| 1539 | |
| 1540 /* We deleted all the text, so turn off typing. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1541 if (gaim_conv_im_get_type_again_timeout(im)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1542 gaim_conv_im_stop_type_again_timeout(im); |
| 4359 | 1543 |
| 1544 serv_send_typing(gaim_conversation_get_gc(conv), | |
| 6695 | 1545 gaim_conversation_get_name(conv), |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
1546 GAIM_NOT_TYPING); |
| 4359 | 1547 } |
| 1548 else { | |
| 1549 /* We're deleting, but not all of it, so it counts as typing. */ | |
| 1550 got_typing_keypress(conv, FALSE); | |
| 1551 } | |
| 1552 } | |
| 1553 | |
| 1554 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1555 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget) |
| 4359 | 1556 { |
| 1557 static GdkCursor *cursor = NULL; | |
| 1558 | |
| 1559 gtkwin->in_drag = TRUE; | |
| 1560 | |
| 1561 if (gtkwin->drag_leave_signal) { | |
| 1562 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1563 gtkwin->drag_leave_signal); | |
| 1564 | |
| 1565 gtkwin->drag_leave_signal = 0; | |
| 1566 } | |
| 1567 | |
| 1568 if (cursor == NULL) | |
| 1569 cursor = gdk_cursor_new(GDK_FLEUR); | |
| 1570 | |
| 1571 /* Grab the pointer */ | |
| 1572 gtk_grab_add(gtkwin->notebook); | |
|
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1573 #ifndef _WIN32 |
|
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1574 /* 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
|
1575 always be true after a button press. */ |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1576 if (!gdk_pointer_is_grabbed()) |
|
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1577 #endif |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1578 gdk_pointer_grab(gtkwin->notebook->window, FALSE, |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1579 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1580 NULL, cursor, GDK_CURRENT_TIME); |
| 4359 | 1581 } |
| 1582 | |
| 1583 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1584 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1585 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1586 GaimGtkWindow *gtkwin; |
| 4359 | 1587 |
| 1588 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1589 | |
| 1590 /* | |
| 1591 * Make sure the user moved the mouse far enough for the | |
| 1592 * drag to be initiated. | |
| 1593 */ | |
| 1594 if (gtkwin->in_predrag) { | |
| 1595 if (e->x_root < gtkwin->drag_min_x || | |
| 1596 e->x_root >= gtkwin->drag_max_x || | |
| 1597 e->y_root < gtkwin->drag_min_y || | |
| 1598 e->y_root >= gtkwin->drag_max_y) { | |
| 1599 | |
| 1600 gtkwin->in_predrag = FALSE; | |
| 1601 notebook_init_grab(gtkwin, widget); | |
| 1602 } | |
| 1603 } | |
| 1604 else { /* Otherwise, draw the arrows. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1605 GaimConvWindow *dest_win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1606 GaimGtkWindow *dest_gtkwin; |
| 4359 | 1607 GtkNotebook *dest_notebook; |
| 1608 GtkWidget *tab, *last_vis_tab = NULL; | |
| 1609 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1; | |
| 1610 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y; | |
| 1611 gboolean horiz_tabs = FALSE, tab_found = FALSE; | |
| 1612 GList *l; | |
| 1613 | |
| 1614 /* Get the window that the cursor is over. */ | |
| 1615 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); | |
| 1616 | |
| 1617 if (dest_win == NULL) { | |
| 1618 dnd_hints_hide_all(); | |
| 1619 | |
| 1620 return TRUE; | |
| 1621 } | |
| 1622 | |
| 1623 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); | |
| 1624 | |
| 1625 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook); | |
| 1626 | |
| 1627 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y); | |
| 1628 | |
| 1629 arrow1_x = arrow2_x = nb_x; | |
| 1630 arrow1_y = arrow2_y = nb_y; | |
| 1631 | |
| 1632 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
| 1633 e->x_root, e->y_root); | |
| 1634 | |
| 1635 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP || | |
| 1636 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) { | |
| 1637 | |
| 1638 horiz_tabs = TRUE; | |
| 1639 } | |
| 1640 | |
| 1641 /* Find out where to put the arrows. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1642 for (l = gaim_conv_window_get_conversations(dest_win), i = 0; |
| 4359 | 1643 l != NULL; |
| 1644 l = l->next, i++) { | |
| 1645 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1646 GaimConversation *conv = l->data; |
| 4359 | 1647 |
| 1648 tab = GAIM_GTK_CONVERSATION(conv)->tabby; | |
| 1649 | |
| 1650 /* | |
| 1651 * If this is the correct tab, record the positions | |
| 1652 * for the arrows. | |
| 1653 */ | |
| 1654 if (i == page_num) { | |
| 1655 if (horiz_tabs) { | |
| 1656 arrow1_x = arrow2_x = nb_x + tab->allocation.x; | |
| 1657 arrow1_y = nb_y + tab->allocation.y; | |
| 1658 arrow2_y = nb_y + tab->allocation.y + | |
| 1659 tab->allocation.height; | |
| 1660 } | |
| 1661 else { | |
| 1662 arrow1_x = nb_x + tab->allocation.x; | |
| 1663 arrow2_x = nb_x + tab->allocation.x + | |
| 1664 tab->allocation.width; | |
| 1665 arrow1_y = arrow2_y = nb_y + tab->allocation.y; | |
| 1666 } | |
| 1667 | |
| 1668 tab_found = TRUE; | |
| 1669 break; | |
| 1670 } | |
| 1671 else { /* Keep track of the right-most tab that we see. */ | |
| 1672 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) { | |
| 1673 last_vis_tab = tab; | |
| 1674 last_vis_tab_loc = tab->allocation.x; | |
| 1675 } | |
| 1676 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) { | |
| 1677 last_vis_tab = tab; | |
| 1678 last_vis_tab_loc = tab->allocation.y; | |
| 1679 } | |
| 1680 } | |
| 1681 } | |
| 1682 | |
| 1683 /* | |
| 1684 * If we didn't find the tab, then we'll just place the | |
| 1685 * arrows to the right/bottom of the last visible tab. | |
| 1686 */ | |
| 1687 if (!tab_found && last_vis_tab) { | |
| 1688 if (horiz_tabs) { | |
| 1689 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x + | |
| 1690 last_vis_tab->allocation.width; | |
| 1691 arrow1_y = nb_y + last_vis_tab->allocation.y; | |
| 1692 arrow2_y = nb_y + last_vis_tab->allocation.y + | |
| 1693 last_vis_tab->allocation.height; | |
| 1694 } | |
| 1695 else { | |
| 1696 arrow1_x = nb_x + last_vis_tab->allocation.x; | |
| 1697 arrow2_x = nb_x + last_vis_tab->allocation.x + | |
| 1698 last_vis_tab->allocation.width; | |
| 1699 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y + | |
| 1700 last_vis_tab->allocation.height; | |
| 1701 } | |
| 1702 } | |
| 1703 | |
| 1704 if (horiz_tabs) { | |
| 1705 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y); | |
| 1706 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y); | |
| 1707 } | |
| 1708 else { | |
| 1709 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y); | |
| 1710 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y); | |
| 1711 } | |
| 1712 } | |
| 1713 | |
| 1714 return TRUE; | |
| 1715 } | |
| 1716 | |
| 1717 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1718 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win) |
| 4359 | 1719 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1720 GaimGtkWindow *gtkwin; |
| 4359 | 1721 |
| 1722 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1723 | |
| 1724 if (gtkwin->in_drag) | |
| 1725 return FALSE; | |
| 1726 | |
| 1727 if (e->x_root < gtkwin->drag_min_x || | |
| 1728 e->x_root >= gtkwin->drag_max_x || | |
| 1729 e->y_root < gtkwin->drag_min_y || | |
| 1730 e->y_root >= gtkwin->drag_max_y) { | |
| 1731 | |
| 1732 gtkwin->in_predrag = FALSE; | |
| 1733 notebook_init_grab(gtkwin, widget); | |
| 1734 } | |
| 1735 | |
| 1736 return TRUE; | |
| 1737 } | |
| 1738 | |
| 1739 /* | |
| 1740 * THANK YOU GALEON! | |
| 1741 */ | |
| 1742 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1743 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1744 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1745 GaimGtkWindow *gtkwin; |
| 4359 | 1746 gint nb_x, nb_y, x_rel, y_rel; |
| 1747 GList *l; | |
| 1748 int tab_clicked; | |
| 1749 | |
| 1750 if (e->button != 1 || e->type != GDK_BUTTON_PRESS) | |
| 1751 return FALSE; | |
| 1752 | |
| 1753 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1754 | |
| 1755 if (gtkwin->in_drag) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1756 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1757 "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
|
1758 return TRUE; |
| 4359 | 1759 } |
| 1760 | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1761 /* |
| 4359 | 1762 * Make sure a tab was actually clicked. The arrow buttons |
| 1763 * mess things up. | |
| 1764 */ | |
| 1765 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root); | |
| 1766 | |
| 1767 if (tab_clicked == -1) | |
| 1768 return FALSE; | |
| 1769 | |
| 1770 /* | |
| 1771 * Get the relative position of the press event, with regards to | |
| 1772 * the position of the notebook. | |
| 1773 */ | |
| 1774 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 1775 | |
| 1776 x_rel = e->x_root - nb_x; | |
| 1777 y_rel = e->y_root - nb_y; | |
| 1778 | |
| 1779 /* Reset the min/max x/y */ | |
| 1780 gtkwin->drag_min_x = 0; | |
| 1781 gtkwin->drag_min_y = 0; | |
| 1782 gtkwin->drag_max_x = 0; | |
| 1783 gtkwin->drag_max_y = 0; | |
| 1784 | |
| 1785 /* Find out which tab was dragged. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1786 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
|
1787 GaimConversation *conv = l->data; |
| 4359 | 1788 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby; |
| 1789 | |
| 1790 if (!GTK_WIDGET_VISIBLE(tab)) | |
| 1791 continue; | |
| 1792 | |
| 1793 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel) | |
| 1794 break; | |
| 1795 | |
| 1796 /* Save the borders of the tab. */ | |
| 1797 gtkwin->drag_min_x = tab->allocation.x + nb_x; | |
| 1798 gtkwin->drag_min_y = tab->allocation.y + nb_y; | |
| 1799 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x; | |
| 1800 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y; | |
| 1801 } | |
| 1802 | |
| 1803 /* Make sure the click occurred in the tab. */ | |
| 1804 if (e->x_root < gtkwin->drag_min_x || | |
| 1805 e->x_root >= gtkwin->drag_max_x || | |
| 1806 e->y_root < gtkwin->drag_min_y || | |
| 1807 e->y_root >= gtkwin->drag_max_y) { | |
| 1808 | |
| 1809 return FALSE; | |
| 1810 } | |
| 1811 | |
| 1812 gtkwin->in_predrag = TRUE; | |
| 1813 | |
| 1814 /* Connect the new motion signals. */ | |
| 1815 gtkwin->drag_motion_signal = | |
| 1816 g_signal_connect(G_OBJECT(widget), "motion_notify_event", | |
| 1817 G_CALLBACK(notebook_motion_cb), win); | |
| 1818 | |
| 1819 gtkwin->drag_leave_signal = | |
| 1820 g_signal_connect(G_OBJECT(widget), "leave_notify_event", | |
| 1821 G_CALLBACK(notebook_leave_cb), win); | |
| 1822 | |
| 1823 return FALSE; | |
| 1824 } | |
| 1825 | |
| 1826 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1827 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1828 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1829 GaimConvWindow *dest_win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1830 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1831 GaimGtkWindow *dest_gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1832 GaimConversation *conv; |
| 4359 | 1833 GtkNotebook *dest_notebook; |
| 1834 gint dest_page_num; | |
| 1835 | |
| 1836 /* | |
| 1837 * Don't check to make sure that the event's window matches the | |
| 1838 * widget's, because we may be getting an event passed on from the | |
| 1839 * close button. | |
| 1840 */ | |
| 1841 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE) | |
| 1842 return FALSE; | |
| 1843 | |
| 1844 if (gdk_pointer_is_grabbed()) { | |
| 1845 gdk_pointer_ungrab(GDK_CURRENT_TIME); | |
| 1846 gtk_grab_remove(widget); | |
| 1847 } | |
| 1848 | |
| 1849 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1850 | |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1851 if (!gtkwin->in_predrag && !gtkwin->in_drag) |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1852 return FALSE; |
| 4359 | 1853 |
| 1854 /* Disconnect the motion signal. */ | |
| 1855 if (gtkwin->drag_motion_signal) { | |
| 1856 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1857 gtkwin->drag_motion_signal); | |
| 1858 | |
| 1859 gtkwin->drag_motion_signal = 0; | |
| 1860 } | |
| 1861 | |
| 1862 /* | |
| 1863 * If we're in a pre-drag, we'll also need to disconnect the leave | |
| 1864 * signal. | |
| 1865 */ | |
| 1866 if (gtkwin->in_predrag) { | |
| 1867 gtkwin->in_predrag = FALSE; | |
| 1868 | |
| 1869 if (gtkwin->drag_leave_signal) { | |
| 1870 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1871 gtkwin->drag_leave_signal); | |
| 1872 | |
| 1873 gtkwin->drag_leave_signal = 0; | |
| 1874 } | |
| 1875 } | |
| 1876 | |
| 1877 /* If we're not in drag... */ | |
| 1878 /* We're perfectly normal people! */ | |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1879 if (!gtkwin->in_drag) |
| 4359 | 1880 return FALSE; |
| 1881 | |
| 1882 gtkwin->in_drag = FALSE; | |
| 1883 | |
| 1884 dnd_hints_hide_all(); | |
| 1885 | |
|
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1886 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); |
| 4359 | 1887 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1888 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 1889 |
| 1890 if (dest_win == NULL) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1891 if (gaim_conv_window_get_conversation_count(win) < 2) |
| 4359 | 1892 return FALSE; |
| 1893 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1894 if (gaim_conv_window_get_conversation_count(win) > 1) { |
| 4359 | 1895 /* Make a new window to stick this to. */ |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1896 GaimConvWindow *new_win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1897 GaimGtkWindow *new_gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1898 GaimGtkConversation *gtkconv; |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1899 gint win_width, win_height; |
| 5121 | 1900 |
| 1901 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4359 | 1902 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1903 new_win = gaim_conv_window_new(); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1904 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1905 gaim_conv_window_add_conversation(new_win, |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1906 gaim_conv_window_remove_conversation(win, |
|
5139
d0182ae31ab8
[gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents:
5133
diff
changeset
|
1907 gaim_conversation_get_index(conv))); |
| 5121 | 1908 |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1909 new_gtkwin = GAIM_GTK_WINDOW(new_win); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1910 |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1911 gtk_window_get_size(GTK_WINDOW(new_gtkwin->window), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1912 &win_width, &win_height); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1913 |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1914 gtk_window_move(GTK_WINDOW(new_gtkwin->window), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1915 e->x_root - (win_width / 2), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1916 e->y_root - (win_height / 2)); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1917 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1918 gaim_conv_window_show(new_win); |
| 4359 | 1919 } |
| 1920 | |
| 1921 return TRUE; | |
| 1922 } | |
| 1923 | |
|
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1924 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); |
|
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1925 |
| 4359 | 1926 /* Get the destination notebook. */ |
| 1927 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 1928 | |
| 1929 /* Get the destination page number. */ | |
| 1930 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
| 7143 | 1931 e->x_root, e->y_root); |
| 4359 | 1932 |
| 1933 if (win == dest_win) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1934 gaim_conv_window_move_conversation(win, |
| 4359 | 1935 gaim_conversation_get_index(conv), dest_page_num); |
| 1936 } | |
| 1937 else { | |
| 1938 size_t pos; | |
| 1939 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1940 gaim_conv_window_remove_conversation(win, |
| 4359 | 1941 gaim_conversation_get_index(conv)); |
| 1942 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1943 pos = gaim_conv_window_add_conversation(dest_win, conv); |
| 4359 | 1944 |
|
5901
74e273e22f94
[gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents:
5881
diff
changeset
|
1945 if (pos != dest_page_num) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1946 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1947 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1948 gaim_conv_window_switch_conversation(dest_win, dest_page_num); |
| 4359 | 1949 } |
| 1950 | |
| 1951 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 1952 | |
| 1953 return TRUE; | |
| 1954 } | |
| 1955 | |
| 8189 | 1956 /************************************************************************** |
| 1957 * A bunch of buddy icon functions | |
| 1958 **************************************************************************/ | |
| 1959 static GdkPixbuf * | |
| 1960 get_tab_icon(GaimConversation *conv) | |
| 7143 | 1961 { |
| 1962 GaimAccount *account = gaim_conversation_get_account(conv); | |
| 1963 const char *name = gaim_conversation_get_name(conv); | |
| 1964 GdkPixbuf *status = NULL; | |
| 1965 | |
| 1966 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 1967 GaimBuddy *b = gaim_find_buddy(account, name); | |
| 1968 if (b != NULL) { | |
| 1969 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, | |
| 1970 GAIM_STATUS_ICON_SMALL); | |
| 1971 } | |
| 1972 } | |
| 1973 | |
| 1974 if (!status) { | |
| 1975 GdkPixbuf *pixbuf; | |
| 1976 pixbuf = create_prpl_icon(account); | |
| 1977 | |
| 1978 if (pixbuf) { | |
| 1979 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15, | |
| 1980 GDK_INTERP_BILINEAR); | |
| 1981 g_object_unref(pixbuf); | |
| 1982 } | |
| 1983 } | |
| 1984 return status; | |
| 1985 } | |
| 1986 | |
| 8189 | 1987 static void |
| 1988 update_tab_icon(GaimConversation *conv) | |
| 1989 { | |
| 1990 GaimGtkConversation *gtkconv; | |
| 1991 GaimConvWindow *win = gaim_conversation_get_window(conv); | |
| 1992 GaimAccount *account; | |
| 1993 const char *name; | |
| 1994 GdkPixbuf *status = NULL; | |
| 1995 | |
| 1996 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 1997 name = gaim_conversation_get_name(conv); | |
| 1998 account = gaim_conversation_get_account(conv); | |
| 1999 | |
| 2000 status = get_tab_icon(conv); | |
| 2001 | |
| 2002 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); | |
| 2003 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); | |
| 2004 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2005 if (gaim_conv_window_get_active_conversation(win) == conv && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2006 gtkconv->u.im->anim == NULL) |
| 8189 | 2007 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status); |
| 2008 | |
| 2009 if(status) | |
| 2010 g_object_unref(status); | |
| 2011 } | |
| 2012 | |
| 2013 static gboolean | |
| 2014 redraw_icon(gpointer data) | |
| 2015 { | |
| 2016 GaimConversation *conv = (GaimConversation *)data; | |
| 2017 GaimGtkConversation *gtkconv; | |
| 2018 | |
| 2019 GdkPixbuf *buf; | |
| 2020 GdkPixbuf *scale; | |
| 2021 GdkPixmap *pm; | |
| 2022 GdkBitmap *bm; | |
| 2023 gint delay; | |
| 2024 | |
| 2025 if (!g_list_find(gaim_get_ims(), conv)) { | |
| 2026 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", | |
| 2027 "Conversation not found in redraw_icon. I think this " | |
| 2028 "is a bug.\n"); | |
| 2029 return FALSE; | |
| 2030 } | |
| 2031 | |
| 2032 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2033 | |
| 2034 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL); | |
| 2035 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
| 2036 | |
| 2037 scale = gdk_pixbuf_scale_simple(buf, | |
| 2038 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) / | |
| 2039 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
| 2040 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) / | |
| 2041 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
| 2042 GDK_INTERP_NEAREST); | |
| 2043 | |
| 2044 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 2045 g_object_unref(G_OBJECT(scale)); | |
| 2046 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm); | |
| 2047 g_object_unref(G_OBJECT(pm)); | |
| 2048 gtk_widget_queue_draw(gtkconv->u.im->icon); | |
| 2049 | |
| 2050 if (bm) | |
| 2051 g_object_unref(G_OBJECT(bm)); | |
| 2052 | |
| 2053 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; | |
| 2054 | |
| 2055 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv); | |
| 2056 | |
| 2057 return FALSE; | |
| 2058 } | |
| 2059 | |
| 2060 static void | |
| 2061 start_anim(GtkObject *obj, GaimConversation *conv) | |
| 2062 { | |
| 2063 GaimGtkConversation *gtkconv; | |
| 2064 int delay; | |
| 2065 | |
| 2066 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 2067 return; | |
| 2068 | |
| 2069 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2070 | |
| 8228 | 2071 if (gtkconv->u.im->anim == NULL) |
| 2072 return; | |
| 2073 | |
| 8202 | 2074 if (gtkconv->u.im->icon_timer != 0) |
| 2075 return; | |
| 2076 | |
| 8189 | 2077 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) |
| 2078 return; | |
| 2079 | |
| 2080 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; | |
| 2081 | |
| 2082 if (gtkconv->u.im->anim) | |
| 2083 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, | |
| 2084 conv); | |
| 2085 } | |
| 2086 | |
| 2087 static void | |
| 2088 stop_anim(GtkObject *obj, GaimConversation *conv) | |
| 2089 { | |
| 2090 GaimGtkConversation *gtkconv; | |
| 2091 | |
| 2092 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 2093 return; | |
| 2094 | |
| 2095 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2096 | |
| 2097 if (gtkconv->u.im->icon_timer != 0) | |
| 2098 g_source_remove(gtkconv->u.im->icon_timer); | |
| 2099 | |
| 2100 gtkconv->u.im->icon_timer = 0; | |
| 2101 } | |
| 2102 | |
| 2103 static void | |
| 2104 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv) | |
| 2105 { | |
| 2106 GaimGtkConversation *gtkconv; | |
| 2107 | |
| 2108 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 2109 return; | |
| 2110 | |
| 2111 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2112 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2113 gtkconv->u.im->animate = |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2114 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)); |
| 8189 | 2115 |
| 2116 if (gtkconv->u.im->animate) | |
| 2117 start_anim(NULL, conv); | |
| 2118 else | |
| 2119 stop_anim(NULL, conv); | |
| 2120 } | |
| 2121 static void | |
| 2122 remove_icon(GaimGtkConversation *gtkconv) | |
| 2123 { | |
| 2124 g_return_if_fail(gtkconv != NULL); | |
| 2125 | |
| 2126 if (gtkconv->u.im->icon != NULL) | |
| 2127 gtk_container_remove(GTK_CONTAINER(gtkconv->bbox), | |
| 2128 gtkconv->u.im->icon->parent->parent); | |
| 2129 | |
| 2130 if (gtkconv->u.im->anim != NULL) | |
| 2131 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); | |
| 2132 | |
| 2133 if (gtkconv->u.im->icon_timer != 0) | |
| 2134 g_source_remove(gtkconv->u.im->icon_timer); | |
| 2135 | |
| 2136 if (gtkconv->u.im->iter != NULL) | |
| 2137 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 2138 | |
| 2139 gtkconv->u.im->icon_timer = 0; | |
| 2140 gtkconv->u.im->icon = NULL; | |
| 2141 gtkconv->u.im->anim = NULL; | |
| 2142 gtkconv->u.im->iter = NULL; | |
| 2143 } | |
| 2144 | |
| 2145 static gboolean | |
| 2146 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv) | |
| 2147 { | |
| 2148 GaimGtkConversation *gtkconv; | |
| 2149 static GtkWidget *menu = NULL; | |
| 2150 GtkWidget *button; | |
| 2151 | |
| 2152 if (e->button != 3 || e->type != GDK_BUTTON_PRESS) | |
| 2153 return FALSE; | |
| 2154 | |
| 2155 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2156 | |
| 2157 /* | |
| 2158 * If a menu already exists, destroy it before creating a new one, | |
| 2159 * thus freeing-up the memory it occupied. | |
| 2160 */ | |
| 2161 if (menu != NULL) | |
| 2162 gtk_widget_destroy(menu); | |
| 2163 | |
| 2164 menu = gtk_menu_new(); | |
| 2165 | |
| 2166 if (gtkconv->u.im->anim && | |
| 2167 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))) | |
| 2168 { | |
| 2169 gaim_new_check_item(menu, _("Animate"), | |
| 2170 G_CALLBACK(toggle_icon_animate_cb), conv, | |
| 2171 gtkconv->u.im->icon_timer); | |
| 2172 } | |
| 2173 | |
| 2174 button = gtk_menu_item_new_with_label(_("Hide Icon")); | |
| 2175 g_signal_connect_swapped(G_OBJECT(button), "activate", | |
| 2176 G_CALLBACK(remove_icon), gtkconv); | |
| 2177 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 2178 gtk_widget_show(button); | |
| 2179 | |
| 2180 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS, | |
| 2181 G_CALLBACK(gaim_gtk_save_icon_dialog), conv, | |
| 2182 0, 0, NULL); | |
| 2183 | |
| 2184 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); | |
| 2185 | |
| 2186 return TRUE; | |
| 2187 } | |
| 2188 /************************************************************************** | |
| 2189 * End of the bunch of buddy icon functions | |
| 2190 **************************************************************************/ | |
| 2191 | |
| 7887 | 2192 /* |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2193 * Makes sure all the menu items and all the buttons are hidden/shown and |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2194 * sensitive/insensitve. This is called after changing tabs and when an |
| 7887 | 2195 * account signs on or off. |
| 2196 */ | |
| 4359 | 2197 static void |
| 7887 | 2198 gray_stuff_out(GaimConversation *conv) |
| 4359 | 2199 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2200 GaimConvWindow *win; |
| 7887 | 2201 GaimGtkWindow *gtkwin; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2202 GaimGtkConversation *gtkconv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2203 GaimConnection *gc; |
| 7887 | 2204 GaimPluginProtocolInfo *prpl_info = NULL; |
| 7222 | 2205 GdkPixbuf *window_icon = NULL; |
| 8439 | 2206 GtkIMHtmlButtons buttons; |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2207 |
| 7887 | 2208 win = gaim_conversation_get_window(conv); |
| 4359 | 2209 gtkwin = GAIM_GTK_WINDOW(win); |
| 2210 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7887 | 2211 gc = gaim_conversation_get_gc(conv); |
| 8439 | 2212 |
| 7879 | 2213 if (gc != NULL) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
2214 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2215 |
| 7887 | 2216 if (gtkwin->menu.send_as != NULL) |
| 2217 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); | |
| 2218 | |
| 2219 /* | |
| 2220 * 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
|
2221 * Stuff that Gaim IMs support in general should be shown for IM |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2222 * conversations. Stuff that Gaim chats support in gerneal should be |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2223 * shown for chat conversations. It doesn't matter whether the PRPL |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2224 * supports it or not--that only affects if the button or menu item |
| 7929 | 2225 * is sensitive or not. |
| 7887 | 2226 */ |
| 4359 | 2227 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 7887 | 2228 /* Show stuff that applies to IMs, hide stuff that applies to chats */ |
| 2229 | |
| 2230 /* Deal with buttons */ | |
| 2231 gtk_widget_show(gtkconv->info); | |
| 2232 gtk_widget_show(gtkconv->send); | |
| 2233 gtk_widget_show(gtkconv->u.im->warn); | |
| 2234 gtk_widget_show(gtkconv->u.im->block); | |
| 2235 | |
| 2236 /* Deal with menu items */ | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2237 gtk_widget_show(gtkwin->menu.view_log); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2238 gtk_widget_show(gtkwin->menu.add_pounce); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2239 gtk_widget_show(gtkwin->menu.get_info); |
| 7887 | 2240 gtk_widget_show(gtkwin->menu.warn); |
| 7859 | 2241 gtk_widget_hide(gtkwin->menu.invite); |
| 7887 | 2242 gtk_widget_show(gtkwin->menu.alias); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2243 gtk_widget_show(gtkwin->menu.block); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2244 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2245 if (gaim_find_buddy(gaim_conversation_get_account(conv), |
| 7143 | 2246 gaim_conversation_get_name(conv)) == NULL) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2247 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2248 gtk_widget_hide(gtkwin->menu.remove); |
| 7929 | 2249 gtk_widget_show(gtkconv->add); |
| 2250 gtk_widget_hide(gtkconv->remove); | |
| 7859 | 2251 } else { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2252 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2253 gtk_widget_hide(gtkwin->menu.add); |
| 7929 | 2254 gtk_widget_hide(gtkconv->add); |
| 2255 gtk_widget_show(gtkconv->remove); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2256 } |
| 7887 | 2257 |
| 2258 gtk_widget_show(gtkwin->menu.insert_link); | |
| 2259 gtk_widget_show(gtkwin->menu.insert_image); | |
| 2260 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 2261 /* Show stuff that applies to IMs, hide stuff that applies to chats */ | |
| 2262 | |
| 2263 /* Deal with buttons */ | |
| 7952 | 2264 gtk_widget_show(gtkconv->info); |
| 7887 | 2265 gtk_widget_show(gtkconv->send); |
| 2266 gtk_widget_show(gtkconv->u.chat->invite); | |
| 2267 | |
| 2268 /* Deal with menu items */ | |
| 7859 | 2269 gtk_widget_hide(gtkwin->menu.view_log); |
| 2270 gtk_widget_hide(gtkwin->menu.add_pounce); | |
| 2271 gtk_widget_hide(gtkwin->menu.get_info); | |
| 7887 | 2272 gtk_widget_hide(gtkwin->menu.warn); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2273 gtk_widget_show(gtkwin->menu.invite); |
| 7887 | 2274 gtk_widget_show(gtkwin->menu.alias); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2275 gtk_widget_hide(gtkwin->menu.block); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2276 |
| 7879 | 2277 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), |
| 2278 gaim_conversation_get_name(conv)) == NULL) { | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2279 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2280 gtk_widget_hide(gtkwin->menu.remove); |
| 7929 | 2281 gtk_widget_show(gtkconv->add); |
| 2282 gtk_widget_hide(gtkconv->remove); | |
| 7859 | 2283 } else { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2284 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2285 gtk_widget_hide(gtkwin->menu.add); |
| 7929 | 2286 gtk_widget_hide(gtkconv->add); |
| 2287 gtk_widget_show(gtkconv->remove); | |
| 7887 | 2288 } |
| 2289 | |
| 2290 gtk_widget_show(gtkwin->menu.insert_link); | |
| 2291 gtk_widget_hide(gtkwin->menu.insert_image); | |
| 2292 } | |
| 2293 | |
| 2294 /* | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2295 * Handle graying stuff out based on whether an account is connected |
| 7887 | 2296 * and what features that account supports. |
| 2297 */ | |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2298 if ((gc != NULL) && |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2299 ( (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) || |
|
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2300 !gaim_conv_chat_has_left(GAIM_CONV_CHAT(conv)) )) { |
| 7887 | 2301 /* Account is online */ |
| 2302 | |
| 2303 /* Deal with buttons */ | |
| 7929 | 2304 gtk_widget_set_sensitive(gtkconv->add, TRUE); |
| 2305 gtk_widget_set_sensitive(gtkconv->remove, TRUE); | |
| 7887 | 2306 gtk_widget_set_sensitive(gtkconv->info, (prpl_info->get_info != NULL)); |
| 7929 | 2307 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2308 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2309 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2310 gtk_widget_set_sensitive(gtkconv->send, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2311 (prpl_info->send_im != NULL)); |
| 7887 | 2312 gtk_widget_set_sensitive(gtkconv->u.im->warn, |
| 2313 (prpl_info->warn != NULL)); | |
| 2314 gtk_widget_set_sensitive(gtkconv->u.im->block, | |
| 2315 (prpl_info->add_deny != NULL)); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2316 } |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2317 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2318 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2319 gtk_widget_set_sensitive(gtkconv->send, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2320 (prpl_info->chat_send != NULL)); |
| 7887 | 2321 gtk_widget_set_sensitive(gtkconv->u.chat->invite, |
| 2322 (prpl_info->chat_invite != NULL)); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2323 } |
| 7887 | 2324 |
| 2325 /* Deal with the toolbar */ | |
| 8422 | 2326 |
| 8420 | 2327 if (gc->flags & GAIM_CONNECTION_HTML) { |
| 2328 buttons = -1; /* Everything on */ | |
| 2329 if (!(prpl_info->options & OPT_PROTO_IM_IMAGE)) | |
| 8422 | 2330 buttons &= ~GTK_IMHTML_IMAGE; |
| 8420 | 2331 if (gc->flags & GAIM_CONNECTION_NO_BGCOLOR) |
| 8422 | 2332 buttons &= ~GTK_IMHTML_BACKCOLOR; |
| 8420 | 2333 } else { |
| 8422 | 2334 buttons = GTK_IMHTML_SMILEY; |
| 8420 | 2335 } |
| 2336 gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons); | |
| 8427 | 2337 gtk_imhtmltoolbar_associate_smileys (GTK_IMHTMLTOOLBAR(gtkconv->toolbar), gaim_account_get_protocol_id(gaim_conversation_get_account(conv))); |
| 8422 | 2338 |
|
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2339 #if 0 |
|
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2340 /* Deal with menu items */ |
| 7887 | 2341 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); |
| 2342 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | |
| 2343 gtk_widget_set_sensitive(gtkwin->menu.get_info, (prpl_info->get_info != NULL)); | |
| 2344 gtk_widget_set_sensitive(gtkwin->menu.warn, (prpl_info->warn != NULL)); | |
| 2345 gtk_widget_set_sensitive(gtkwin->menu.invite, | |
| 2346 (prpl_info->chat_invite != NULL)); | |
|
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2347 #endif |
|
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
2348 |
| 7887 | 2349 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 2350 if (gaim_find_buddy(gaim_conversation_get_account(conv), | |
| 2351 gaim_conversation_get_name(conv)) == NULL) | |
| 2352 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
| 2353 else | |
| 2354 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | |
| 2355 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 2356 if (gaim_blist_find_chat(gaim_conversation_get_account(conv), | |
| 2357 gaim_conversation_get_name(conv)) == NULL) | |
| 2358 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
| 2359 else | |
| 2360 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); | |
| 2361 } | |
| 2362 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2363 gtk_widget_set_sensitive(gtkwin->menu.block, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2364 (prpl_info->add_deny != NULL)); |
| 7887 | 2365 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); |
| 7859 | 2366 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); |
| 7887 | 2367 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
| 2368 gtk_widget_set_sensitive(gtkwin->menu.insert_image, | |
| 2369 (prpl_info->options & OPT_PROTO_IM_IMAGE)); | |
| 2370 } else { | |
| 2371 /* Account is offline */ | |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
2372 /* Or it's a chat where we left. */ |
| 7887 | 2373 |
| 2374 /* Deal with buttons */ | |
| 7929 | 2375 gtk_widget_set_sensitive(gtkconv->add, FALSE); |
| 2376 gtk_widget_set_sensitive(gtkconv->remove, FALSE); | |
| 7887 | 2377 gtk_widget_set_sensitive(gtkconv->info, FALSE); |
| 2378 gtk_widget_set_sensitive(gtkconv->send, FALSE); | |
| 2379 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 2380 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE); | |
| 2381 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE); | |
| 2382 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 2383 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE); | |
| 2384 } | |
| 8420 | 2385 |
| 7887 | 2386 /* Then deal with menu items */ |
| 2387 gtk_widget_set_sensitive(gtkwin->menu.view_log, TRUE); | |
| 2388 gtk_widget_set_sensitive(gtkwin->menu.add_pounce, TRUE); | |
| 2389 gtk_widget_set_sensitive(gtkwin->menu.get_info, FALSE); | |
| 2390 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE); | |
| 2391 gtk_widget_set_sensitive(gtkwin->menu.invite, FALSE); | |
| 2392 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); | |
| 2393 gtk_widget_set_sensitive(gtkwin->menu.block, FALSE); | |
| 2394 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); | |
| 2395 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); | |
| 7929 | 2396 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
| 7887 | 2397 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); |
| 2398 } | |
| 2399 | |
| 2400 /* | |
| 2401 * Update the window's icon | |
| 2402 */ | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2403 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2404 (gtkconv->u.im->anim)) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2405 { |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2406 window_icon = |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2407 gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); |
| 7887 | 2408 g_object_ref(window_icon); |
| 2409 } else { | |
| 7219 | 2410 window_icon = get_tab_icon(conv); |
| 4359 | 2411 } |
| 7887 | 2412 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); |
| 2413 g_object_unref(G_OBJECT(window_icon)); | |
| 2414 } | |
| 2415 | |
| 2416 static void | |
| 8189 | 2417 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
| 2418 gpointer user_data) | |
| 2419 { | |
| 2420 GaimConvWindow *win; | |
| 2421 GaimConversation *conv; | |
| 2422 GaimGtkConversation *gtkconv; | |
| 2423 | |
| 2424 win = (GaimConvWindow *)user_data; | |
| 2425 conv = gaim_conv_window_get_active_conversation(win); | |
| 2426 | |
| 2427 g_return_if_fail(conv != NULL); | |
| 2428 | |
| 8192 | 2429 if (gaim_conversation_get_type(conv) != GAIM_CONV_IM) |
| 2430 return; | |
| 2431 | |
| 8189 | 2432 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 2433 | |
| 2434 stop_anim(NULL, conv); | |
| 2435 } | |
| 2436 | |
| 2437 static void | |
| 7887 | 2438 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
| 2439 gpointer user_data) | |
| 2440 { | |
| 2441 GaimConvWindow *win; | |
| 2442 GaimConversation *conv; | |
| 2443 GaimGtkConversation *gtkconv; | |
| 2444 GaimGtkWindow *gtkwin; | |
| 2445 | |
| 2446 win = (GaimConvWindow *)user_data; | |
| 2447 conv = gaim_conv_window_get_conversation_at(win, page_num); | |
| 2448 | |
| 2449 g_return_if_fail(conv != NULL); | |
| 2450 | |
| 2451 gtkwin = GAIM_GTK_WINDOW(win); | |
| 2452 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2453 | |
| 2454 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE); | |
| 2455 | |
| 2456 /* Update the menubar */ | |
| 2457 gray_stuff_out(conv); | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2458 |
| 4736 | 2459 update_typing_icon(conv); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2460 |
| 4359 | 2461 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging), |
| 7143 | 2462 gaim_conversation_is_logging(conv)); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2463 |
| 4359 | 2464 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds), |
| 7143 | 2465 gtkconv->make_sound); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2466 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2467 gtk_check_menu_item_set_active( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2468 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2469 gtkconv->show_formatting_toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2470 |
| 8189 | 2471 /* |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
2472 * We pause icons when they are not visible. If this icon should |
| 8189 | 2473 * be animated then start it back up again.lll |
| 2474 */ | |
| 8192 | 2475 if ((gaim_conversation_get_type(conv) == GAIM_CONV_IM) && |
| 2476 (gtkconv->u.im->animate)) | |
| 8189 | 2477 start_anim(NULL, conv); |
| 2478 | |
| 4359 | 2479 gtk_widget_grab_focus(gtkconv->entry); |
| 4681 | 2480 |
| 4965 | 2481 gtk_window_set_title(GTK_WINDOW(gtkwin->window), |
| 7143 | 2482 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
| 4359 | 2483 } |
| 2484 | |
| 2485 /************************************************************************** | |
| 2486 * Utility functions | |
| 2487 **************************************************************************/ | |
| 2488 | |
| 2489 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2490 got_typing_keypress(GaimConversation *conv, gboolean first) |
| 4359 | 2491 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2492 GaimConvIm *im; |
| 4685 | 2493 |
| 4359 | 2494 /* |
| 2495 * 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
|
2496 * send GAIM_TYPED any time soon. |
| 4359 | 2497 */ |
| 2498 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2499 im = GAIM_CONV_IM(conv); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2500 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2501 if (gaim_conv_im_get_type_again_timeout(im)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2502 gaim_conv_im_stop_type_again_timeout(im); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2503 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2504 gaim_conv_im_start_type_again_timeout(im); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2505 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2506 if (first || (gaim_conv_im_get_type_again(im) != 0 && |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2507 time(NULL) > gaim_conv_im_get_type_again(im))) { |
| 4359 | 2508 |
| 2509 int timeout = serv_send_typing(gaim_conversation_get_gc(conv), | |
| 2510 (char *)gaim_conversation_get_name(conv), | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2511 GAIM_TYPING); |
| 4359 | 2512 |
| 2513 if (timeout) | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2514 gaim_conv_im_set_type_again(im, time(NULL) + timeout); |
| 4359 | 2515 else |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2516 gaim_conv_im_set_type_again(im, 0); |
| 4359 | 2517 } |
| 2518 } | |
| 2519 | |
| 4736 | 2520 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2521 update_typing_icon(GaimConversation *conv) |
| 4736 | 2522 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2523 GaimGtkWindow *gtkwin; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2524 GaimConvIm *im = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2525 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4736 | 2526 |
| 2527 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); | |
| 2528 | |
| 2529 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2530 im = GAIM_CONV_IM(conv); |
| 4736 | 2531 |
| 2532 if(gtkwin->menu.typing_icon) { | |
| 2533 gtk_widget_destroy(gtkwin->menu.typing_icon); | |
| 2534 gtkwin->menu.typing_icon = NULL; | |
| 2535 } | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2536 if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) { |
| 4736 | 2537 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
| 2538 gtk_image_menu_item_set_image( | |
| 2539 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
| 2540 gtk_image_new_from_stock(GAIM_STOCK_TYPING, | |
| 2541 GTK_ICON_SIZE_MENU)); | |
| 4757 | 2542 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
| 4736 | 2543 _("User is typing..."), NULL); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2544 } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) { |
| 4736 | 2545 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
| 2546 gtk_image_menu_item_set_image( | |
| 2547 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
| 2548 gtk_image_new_from_stock(GAIM_STOCK_TYPED, | |
| 2549 GTK_ICON_SIZE_MENU)); | |
| 4757 | 2550 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
| 4736 | 2551 _("User has typed something and paused"), NULL); |
| 2552 } | |
| 2553 | |
| 2554 if(gtkwin->menu.typing_icon) { | |
| 2555 gtk_menu_item_set_right_justified( | |
| 2556 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE); | |
| 2557 gtk_widget_show_all(gtkwin->menu.typing_icon); | |
| 2558 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar), | |
| 2559 gtkwin->menu.typing_icon); | |
| 2560 } | |
| 2561 } | |
| 2562 | |
| 4685 | 2563 static gboolean |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2564 update_send_as_selection(GaimConvWindow *win) |
| 4359 | 2565 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2566 GaimAccount *account; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2567 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2568 GaimGtkWindow *gtkwin; |
| 4359 | 2569 GtkWidget *menu; |
| 2570 GList *child; | |
| 2571 | |
|
7090
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2572 if (g_list_find(gaim_get_windows(), win) == NULL) |
|
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2573 return FALSE; |
| 4849 | 2574 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2575 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 2576 |
|
5860
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2577 if (conv == NULL) |
|
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2578 return FALSE; |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2579 |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2580 account = gaim_conversation_get_account(conv); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2581 gtkwin = GAIM_GTK_WINDOW(win); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2582 |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2583 if (gtkwin->menu.send_as == NULL) |
| 4685 | 2584 return FALSE; |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2585 |
| 4359 | 2586 gtk_widget_show(gtkwin->menu.send_as); |
| 2587 | |
| 2588 menu = gtk_menu_item_get_submenu( | |
| 2589 GTK_MENU_ITEM(gtkwin->menu.send_as)); | |
| 2590 | |
| 2591 for (child = gtk_container_get_children(GTK_CONTAINER(menu)); | |
| 2592 child != NULL; | |
| 2593 child = child->next) { | |
| 2594 | |
| 2595 GtkWidget *item = child->data; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2596 GaimAccount *item_account = g_object_get_data(G_OBJECT(item), |
| 4673 | 2597 "gaim_account"); |
| 2598 | |
| 2599 if (account == item_account) { | |
| 4359 | 2600 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); |
| 2601 break; | |
| 2602 } | |
| 2603 } | |
|
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2604 |
| 4685 | 2605 return FALSE; |
| 4359 | 2606 } |
| 2607 | |
| 2608 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2609 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv) |
| 4359 | 2610 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2611 GaimGtkWindow *gtkwin; |
| 4359 | 2612 GtkWidget *menu; |
| 2613 GtkWidget *menuitem; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2614 GList *gcs; |
| 4359 | 2615 GList *convs; |
| 2616 GSList *group = NULL; | |
| 2617 gboolean first_offline = TRUE; | |
| 2618 gboolean found_online = FALSE; | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2619 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| 4359 | 2620 |
| 2621 gtkwin = GAIM_GTK_WINDOW(win); | |
| 2622 | |
| 2623 if (gtkwin->menu.send_as != NULL) | |
| 2624 gtk_widget_destroy(gtkwin->menu.send_as); | |
| 2625 | |
| 2626 /* See if we have > 1 connection active. */ | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2627 if (g_list_length(gaim_connections_get_all()) < 2) { |
| 4359 | 2628 /* Now make sure we don't have any Offline entries. */ |
| 2629 gboolean found_offline = FALSE; | |
| 2630 | |
| 2631 for (convs = gaim_get_conversations(); | |
| 2632 convs != NULL; | |
| 2633 convs = convs->next) { | |
| 2634 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2635 GaimConversation *conv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2636 GaimAccount *account; |
| 4491 | 2637 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2638 conv = (GaimConversation *)convs->data; |
| 4491 | 2639 account = gaim_conversation_get_account(conv); |
| 2640 | |
|
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2641 if (account != NULL && account->gc == NULL) { |
| 4359 | 2642 found_offline = TRUE; |
| 2643 break; | |
| 2644 } | |
| 2645 } | |
| 2646 | |
| 2647 if (!found_offline) { | |
| 2648 gtkwin->menu.send_as = NULL; | |
| 2649 return; | |
| 2650 } | |
| 2651 } | |
| 2652 | |
| 2653 /* Build the Send As menu */ | |
| 2654 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As")); | |
| 2655 gtk_widget_show(gtkwin->menu.send_as); | |
| 2656 | |
| 2657 menu = gtk_menu_new(); | |
|
7857
43f63ff8a6d8
[gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents:
7855
diff
changeset
|
2658 gtk_menu_shell_insert(GTK_MENU_SHELL(gtkwin->menu.menubar), |
|
43f63ff8a6d8
[gaim-migrate @ 8511]
Christian Hammond <chipx86@chipx86.com>
parents:
7855
diff
changeset
|
2659 gtkwin->menu.send_as, 2); |
| 4359 | 2660 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu); |
| 2661 | |
| 2662 gtk_widget_show(menu); | |
| 2663 | |
| 2664 /* Fill it with entries. */ | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2665 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) { |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2666 |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2667 GaimConnection *gc; |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2668 GaimAccount *account; |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2669 GtkWidget *box; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2670 GtkWidget *label; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2671 GtkWidget *image; |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2672 GdkPixbuf *pixbuf, *scale; |
| 4359 | 2673 |
| 2674 found_online = TRUE; | |
| 2675 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2676 gc = (GaimConnection *)gcs->data; |
| 4359 | 2677 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2678 /* Create a pixmap for the protocol icon. */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2679 pixbuf = create_prpl_icon(gc->account); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2680 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
|
2681 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2682 /* Now convert it to GtkImage */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2683 if (pixbuf == NULL) |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2684 image = gtk_image_new(); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2685 else |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2686 image = gtk_image_new_from_pixbuf(scale); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2687 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2688 gtk_size_group_add_widget(sg, image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2689 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2690 g_object_unref(G_OBJECT(scale)); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2691 g_object_unref(G_OBJECT(pixbuf)); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2692 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2693 account = gaim_connection_get_account(gc); |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2694 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2695 /* Make our menu item */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2696 menuitem = gtk_radio_menu_item_new_with_label(group, |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2697 gaim_account_get_username(account)); |
| 4793 | 2698 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 4359 | 2699 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2700 /* Do some evil, see some evil, speak some evil. */ |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2701 box = gtk_hbox_new(FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2702 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2703 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2704 g_object_ref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2705 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2706 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2707 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2708 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2709 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2710 g_object_unref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2711 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2712 gtk_container_add(GTK_CONTAINER(menuitem), box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2713 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2714 gtk_widget_show(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2715 gtk_widget_show(image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2716 gtk_widget_show(box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2717 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2718 /* Set our data and callbacks. */ |
| 4359 | 2719 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
| 4673 | 2720 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account); |
| 4359 | 2721 |
| 4786 | 2722 g_signal_connect(G_OBJECT(menuitem), "activate", |
| 4673 | 2723 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
| 4359 | 2724 |
| 2725 gtk_widget_show(menuitem); | |
| 2726 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2727 } | |
| 2728 | |
| 2729 /* | |
| 2730 * Fill it with any accounts that still has an open (yet disabled) window | |
| 2731 * (signed off accounts with a window open). | |
| 2732 */ | |
| 2733 for (convs = gaim_get_conversations(); | |
| 2734 convs != NULL; | |
| 2735 convs = convs->next) { | |
| 2736 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2737 GaimConversation *conv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2738 GaimAccount *account; |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2739 GtkWidget *box; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2740 GtkWidget *label; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2741 GtkWidget *image; |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2742 GdkPixbuf *pixbuf, *scale; |
| 4359 | 2743 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2744 conv = (GaimConversation *)convs->data; |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2745 |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2746 if (conv == deleted_conv) |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2747 continue; |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2748 |
| 4491 | 2749 account = gaim_conversation_get_account(conv); |
| 2750 | |
|
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2751 if (account != NULL && account->gc == NULL) { |
| 4359 | 2752 if (first_offline && found_online) { |
| 2753 menuitem = gtk_separator_menu_item_new(); | |
| 2754 gtk_widget_show(menuitem); | |
| 2755 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2756 | |
| 2757 first_offline = FALSE; | |
| 2758 } | |
| 2759 | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2760 /* Create a pixmap for the protocol icon. */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2761 pixbuf = create_prpl_icon(account); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2762 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2763 GDK_INTERP_BILINEAR); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2764 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2765 /* Now convert it to GtkImage */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2766 if (pixbuf == NULL) |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2767 image = gtk_image_new(); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2768 else |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2769 image = gtk_image_new_from_pixbuf(scale); |
|
4669
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 gtk_size_group_add_widget(sg, image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2772 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2773 if (scale != NULL) g_object_unref(scale); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2774 if (pixbuf != NULL) g_object_unref(pixbuf); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2775 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2776 /* Make our menu item */ |
| 4359 | 2777 menuitem = gtk_radio_menu_item_new_with_label(group, |
| 4491 | 2778 account->username); |
| 4793 | 2779 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 4359 | 2780 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2781 /* Do some evil, see some evil, speak some evil. */ |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2782 box = gtk_hbox_new(FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2783 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2784 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2785 g_object_ref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2786 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2787 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2788 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2789 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2790 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2791 g_object_unref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2792 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2793 gtk_container_add(GTK_CONTAINER(menuitem), box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2794 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2795 gtk_widget_show(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2796 gtk_widget_show(image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2797 gtk_widget_show(box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2798 |
| 4359 | 2799 gtk_widget_set_sensitive(menuitem, FALSE); |
| 4786 | 2800 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
| 4674 | 2801 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account); |
| 4359 | 2802 |
| 4786 | 2803 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
2804 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
| 4786 | 2805 |
| 4359 | 2806 gtk_widget_show(menuitem); |
| 2807 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2808 } | |
| 2809 } | |
| 2810 | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2811 g_object_unref(sg); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2812 |
| 4359 | 2813 gtk_widget_show(gtkwin->menu.send_as); |
| 2814 update_send_as_selection(win); | |
| 2815 } | |
| 2816 | |
| 2817 static GList * | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2818 generate_invite_user_names(GaimConnection *gc) |
| 4359 | 2819 { |
| 6695 | 2820 GaimBlistNode *gnode,*cnode,*bnode; |
| 4359 | 2821 static GList *tmp = NULL; |
| 2822 | |
| 2823 if (tmp) | |
| 2824 g_list_free(tmp); | |
| 2825 | |
| 2826 tmp = g_list_append(NULL, ""); | |
| 2827 | |
| 2828 if (gc != NULL) { | |
| 4785 | 2829 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 2830 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 2831 continue; | |
| 6695 | 2832 for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 2833 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 4785 | 2834 continue; |
| 6695 | 2835 for(bnode = cnode->child; bnode; bnode = bnode->next) { |
| 2836 GaimBuddy *buddy; | |
| 2837 | |
| 2838 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 2839 continue; | |
| 2840 | |
| 2841 buddy = (GaimBuddy *)bnode; | |
| 2842 | |
| 2843 if (buddy->account == gc->account && | |
| 2844 GAIM_BUDDY_IS_ONLINE(buddy)) | |
| 2845 tmp = g_list_append(tmp, buddy->name); | |
| 2846 } | |
| 4359 | 2847 } |
| 2848 } | |
| 2849 } | |
| 2850 | |
| 2851 return tmp; | |
| 2852 } | |
| 2853 | |
| 2854 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2855 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos) |
| 4359 | 2856 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2857 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2858 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2859 GaimConvChat *chat; |
| 4359 | 2860 GtkTreeIter iter; |
| 2861 GtkListStore *ls; | |
| 2862 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2863 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 2864 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 2865 gtkchat = gtkconv->u.chat; | |
| 2866 | |
| 2867 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list))); | |
| 2868 | |
| 2869 gtk_list_store_append(ls, &iter); | |
| 2870 gtk_list_store_set(ls, &iter, 0, | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2871 (gaim_conv_chat_is_user_ignored(chat, name) ? "X" : " "), |
| 4359 | 2872 1, name, -1); |
| 2873 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
| 2874 GTK_SORT_ASCENDING); | |
| 2875 } | |
| 2876 | |
| 2877 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2878 tab_complete(GaimConversation *conv) |
| 4359 | 2879 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2880 GaimGtkConversation *gtkconv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2881 GaimConvChat *chat; |
| 4359 | 2882 GtkTextIter cursor, word_start, start_buffer; |
| 2883 int start; | |
| 2884 int most_matched = -1; | |
| 2885 char *entered, *partial = NULL; | |
| 2886 char *text; | |
| 8021 | 2887 char *nick_partial; |
| 4359 | 2888 GList *matches = NULL; |
| 2889 GList *nicks = NULL; | |
| 2890 | |
| 2891 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2892 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 2893 |
| 2894 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 2895 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2896 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2897 | |
| 2898 word_start = cursor; | |
| 2899 | |
| 2900 /* if there's nothing there just return */ | |
| 2901 if (!gtk_text_iter_compare(&cursor, &start_buffer)) | |
| 2902 return; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
2903 |
| 4359 | 2904 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer, |
| 2905 &cursor, FALSE); | |
| 2906 | |
| 2907 /* if we're at the end of ": " we need to move back 2 spaces */ | |
| 2908 start = strlen(text) - 1; | |
| 2909 | |
| 8021 | 2910 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) { |
| 4359 | 2911 gtk_text_iter_backward_chars(&word_start, 2); |
| 8021 | 2912 start-=2; |
| 2913 } | |
| 4359 | 2914 |
| 2915 /* find the start of the word that we're tabbing */ | |
| 2916 while (start >= 0 && text[start] != ' ') { | |
| 2917 gtk_text_iter_backward_char(&word_start); | |
| 2918 start--; | |
| 2919 } | |
| 2920 | |
| 2921 g_free(text); | |
| 2922 | |
| 2923 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start, | |
| 2924 &cursor, FALSE); | |
| 2925 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
2926 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
| 4359 | 2927 if (strlen(entered) >= 2 && |
| 2928 !strncmp(": ", entered + strlen(entered) - 2, 2)) { | |
| 2929 | |
| 2930 entered[strlen(entered) - 2] = 0; | |
| 2931 } | |
| 2932 } | |
| 2933 | |
| 8021 | 2934 if (!g_utf8_strlen(entered, -1)) { |
| 4359 | 2935 g_free(entered); |
| 2936 return; | |
| 2937 } | |
| 2938 | |
| 8021 | 2939 nick_partial = g_malloc(strlen(entered)+1); |
| 2940 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2941 for (nicks = gaim_conv_chat_get_users(chat); |
| 4359 | 2942 nicks != NULL; |
| 2943 nicks = nicks->next) { | |
| 2944 | |
| 2945 char *nick = nicks->data; | |
| 8021 | 2946 |
| 8159 | 2947 strncpy(nick_partial, nick, strlen(entered)); |
| 8172 | 2948 nick_partial[strlen(entered)] = '\0'; |
| 8021 | 2949 if(gaim_utf8_strcasecmp(nick_partial, entered)) |
| 2950 continue; | |
| 4359 | 2951 |
| 2952 /* if we're here, it's a possible completion */ | |
| 2953 | |
| 2954 /* if we're doing old-style, just fill in the completion */ | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
2955 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
| 4359 | 2956 gtk_text_buffer_delete(gtkconv->entry_buffer, |
| 2957 &word_start, &cursor); | |
| 2958 | |
| 2959 if (strlen(nick) == strlen(entered)) { | |
| 2960 nicks = (nicks->next | |
| 2961 ? nicks->next | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2962 : gaim_conv_chat_get_users(chat)); |
| 4359 | 2963 |
| 2964 nick = nicks->data; | |
| 2965 } | |
| 2966 | |
| 2967 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
| 2968 &start_buffer); | |
| 2969 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2970 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2971 | |
| 2972 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
| 2973 char *tmp = g_strdup_printf("%s: ", nick); | |
| 2974 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 2975 tmp, -1); | |
| 2976 g_free(tmp); | |
| 2977 } | |
| 2978 else | |
| 2979 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 2980 nick, -1); | |
| 2981 | |
| 8021 | 2982 g_free(nick_partial); |
| 4359 | 2983 g_free(entered); |
| 2984 | |
| 2985 return; | |
| 2986 } | |
| 2987 | |
| 2988 /* we're only here if we're doing new style */ | |
| 2989 if (most_matched == -1) { | |
| 2990 /* | |
| 2991 * this will only get called once, since from now | |
| 2992 * on most_matched is >= 0 | |
| 2993 */ | |
| 2994 most_matched = strlen(nick); | |
| 2995 partial = g_strdup(nick); | |
| 2996 } | |
| 2997 else if (most_matched) { | |
| 8021 | 2998 char *tmp = g_strdup(nick); |
| 2999 | |
| 3000 while (gaim_utf8_strcasecmp(tmp, partial)) { | |
| 3001 partial[most_matched] = '\0'; | |
| 3002 if(most_matched < strlen(tmp)) | |
| 3003 tmp[most_matched] = '\0'; | |
| 4359 | 3004 most_matched--; |
| 8021 | 3005 } |
| 8079 | 3006 most_matched++; |
| 8021 | 3007 |
| 3008 g_free(tmp); | |
| 4359 | 3009 } |
| 3010 | |
| 3011 matches = g_list_append(matches, nick); | |
| 3012 } | |
| 3013 | |
| 8021 | 3014 g_free(nick_partial); |
| 3015 | |
| 4359 | 3016 /* we're only here if we're doing new style */ |
| 3017 | |
| 3018 /* if there weren't any matches, return */ | |
| 3019 if (!matches) { | |
| 3020 /* if matches isn't set partials won't be either */ | |
| 3021 g_free(entered); | |
| 3022 return; | |
| 3023 } | |
| 3024 | |
| 3025 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor); | |
| 3026 | |
| 3027 if (!matches->next) { | |
| 3028 /* there was only one match. fill it in. */ | |
| 3029 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 3030 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 3031 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 3032 | |
| 3033 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
| 3034 char *tmp = g_strdup_printf("%s: ", (char *)matches->data); | |
| 3035 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1); | |
| 3036 g_free(tmp); | |
| 3037 } | |
| 3038 else | |
| 3039 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 3040 matches->data, -1); | |
| 3041 | |
| 3042 matches = g_list_remove(matches, matches->data); | |
| 3043 } | |
| 3044 else { | |
| 3045 /* | |
| 3046 * there were lots of matches, fill in as much as possible | |
| 3047 * and display all of them | |
| 3048 */ | |
| 3049 char *addthis = g_malloc0(1); | |
| 3050 | |
| 3051 while (matches) { | |
| 3052 char *tmp = addthis; | |
| 3053 addthis = g_strconcat(tmp, matches->data, " ", NULL); | |
| 3054 g_free(tmp); | |
| 3055 matches = g_list_remove(matches, matches->data); | |
| 3056 } | |
| 3057 | |
| 6982 | 3058 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG, |
| 4359 | 3059 time(NULL)); |
| 3060 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1); | |
| 3061 g_free(addthis); | |
| 3062 } | |
| 3063 | |
| 3064 g_free(entered); | |
| 3065 g_free(partial); | |
| 3066 } | |
| 3067 | |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3068 static void |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3069 save_convo(GtkWidget *save, GaimConversation *c) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3070 { |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3071 char buf[BUF_LONG]; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3072 GtkWidget *window; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3073 |
| 7859 | 3074 window = gtk_file_selection_new(_("Save Conversation")); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3075 |
| 8557 | 3076 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.html", |
| 7261 | 3077 gaim_home_dir(), gaim_normalize(c->account, c->name)); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3078 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3079 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
|
3080 "gaim_conversation", c); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3081 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
| 6038 | 3082 "clicked", G_CALLBACK(do_check_save_convo), window); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3083 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
|
3084 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3085 gtk_widget_show(window); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3086 } |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
3087 |
| 4359 | 3088 static GtkItemFactoryEntry menu_items[] = |
| 3089 { | |
| 3090 /* Conversation menu */ | |
| 4596 | 3091 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3092 |
| 7887 | 3093 { N_("/Conversation/New Instant _Message..."), "<CTL>M", menu_new_conv_cb, |
| 7859 | 3094 0, "<StockItem>", GAIM_STOCK_IM }, |
| 3095 | |
| 3096 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" }, | |
| 3097 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3098 { N_("/Conversation/_Find..."), NULL, menu_find_cb, 0, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3099 "<StockItem>", GTK_STOCK_FIND }, |
| 7859 | 3100 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL }, |
| 4596 | 3101 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, |
| 4359 | 3102 "<StockItem>", GTK_STOCK_SAVE_AS }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3103 |
| 4359 | 3104 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3105 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3106 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
|
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3107 0, NULL }, |
| 7859 | 3108 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3109 "<StockItem>", GAIM_STOCK_INFO }, |
| 7859 | 3110 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0, |
| 3111 "<StockItem>", GAIM_STOCK_WARN }, | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3112 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3113 "<StockItem>", GAIM_STOCK_INVITE }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3114 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
3115 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3116 |
| 7859 | 3117 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0, |
| 3118 "<StockItem>", GAIM_STOCK_EDIT }, | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3119 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3120 "<StockItem>", GAIM_STOCK_BLOCK }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3121 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3122 "<StockItem>", GTK_STOCK_ADD }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3123 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3124 "<StockItem>", GTK_STOCK_REMOVE }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3125 |
| 7859 | 3126 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" }, |
| 3127 | |
|
8330
80915fd16349
[gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents:
8329
diff
changeset
|
3128 { N_("/Conversation/Insert Lin_k..."), NULL, NULL, 0, /* menu_insert_link_cb, 0, */ |
| 7859 | 3129 "<StockItem>", GAIM_STOCK_LINK }, |
|
8330
80915fd16349
[gaim-migrate @ 9054]
Christian Hammond <chipx86@chipx86.com>
parents:
8329
diff
changeset
|
3130 { N_("/Conversation/Insert Imag_e..."), NULL, NULL, 0, /* menu_insert_image_cb, 0, */ |
| 7859 | 3131 "<StockItem>", GAIM_STOCK_IMAGE }, |
| 3132 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3133 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3134 |
| 4596 | 3135 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, |
| 4359 | 3136 "<StockItem>", GTK_STOCK_CLOSE }, |
| 3137 | |
| 3138 /* Options */ | |
| 4596 | 3139 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, |
| 3140 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, | |
| 3141 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3142 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" }, |
| 4359 | 3143 }; |
| 3144 | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
3145 static const int menu_item_count = |
| 4359 | 3146 sizeof(menu_items) / sizeof(*menu_items); |
| 3147 | |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3148 static char * |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3149 item_factory_translate_func (const char *path, gpointer func_data) |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3150 { |
| 7386 | 3151 return _((char *)path); |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3152 } |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
3153 |
| 4359 | 3154 static GtkWidget * |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3155 setup_menubar(GaimConvWindow *win) |
| 4359 | 3156 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3157 GaimGtkWindow *gtkwin; |
| 5116 | 3158 GtkAccelGroup *accel_group; |
| 4359 | 3159 gtkwin = GAIM_GTK_WINDOW(win); |
| 3160 | |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3161 accel_group = gtk_accel_group_new (); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3162 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
3163 g_object_unref (accel_group); |
| 5116 | 3164 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3165 gtkwin->menu.item_factory = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3166 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3167 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3168 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3169 item_factory_translate_func, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3170 NULL, NULL); |
| 4630 | 3171 |
| 3172 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count, | |
| 4359 | 3173 menu_items, win); |
| 7420 | 3174 g_signal_connect(G_OBJECT(accel_group), "accel-changed", |
| 3175 G_CALLBACK(gaim_gtk_save_accels_cb), NULL); | |
| 4359 | 3176 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3177 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3178 gtkwin->menu.menubar = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3179 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3180 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3181 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3182 gtkwin->menu.view_log = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3183 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
| 7295 | 3184 N_("/Conversation/View Log")); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3185 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3186 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3187 gtkwin->menu.add_pounce = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3188 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3189 N_("/Conversation/Add Buddy Pounce...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3190 |
| 7879 | 3191 /* --- */ |
|
5908
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 gtkwin->menu.get_info = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3194 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
| 7859 | 3195 N_("/Conversation/Get Info")); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3196 |
| 7879 | 3197 gtkwin->menu.warn = |
| 3198 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
| 3199 N_("/Conversation/Warn...")); | |
| 3200 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3201 gtkwin->menu.invite = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3202 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3203 N_("/Conversation/Invite...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3204 |
|
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 |
| 7879 | 3207 gtkwin->menu.alias = |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3208 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
| 7879 | 3209 N_("/Conversation/Alias...")); |
|
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 gtkwin->menu.block = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3212 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3213 N_("/Conversation/Block...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3214 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3215 gtkwin->menu.add = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3216 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3217 N_("/Conversation/Add...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3218 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3219 gtkwin->menu.remove = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3220 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3221 N_("/Conversation/Remove...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3222 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3223 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3224 |
| 7879 | 3225 gtkwin->menu.insert_link = |
| 3226 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
| 3227 N_("/Conversation/Insert Link...")); | |
| 3228 | |
| 3229 gtkwin->menu.insert_image = | |
| 3230 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
| 3231 N_("/Conversation/Insert Image...")); | |
| 3232 | |
| 3233 /* --- */ | |
| 3234 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3235 gtkwin->menu.logging = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3236 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3237 N_("/Options/Enable Logging")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3238 gtkwin->menu.sounds = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3239 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3240 N_("/Options/Enable Sounds")); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3241 gtkwin->menu.show_formatting_toolbar = |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3242 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3243 N_("/Options/Show Formatting Toolbar")); |
| 4359 | 3244 |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
3245 generate_send_as_items(win, NULL); |
| 4359 | 3246 |
| 3247 gtk_widget_show(gtkwin->menu.menubar); | |
| 4931 | 3248 |
| 3249 return gtkwin->menu.menubar; | |
| 4359 | 3250 } |
| 3251 | |
| 3252 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3253 setup_im_buttons(GaimConversation *conv, GtkWidget *parent) |
| 4359 | 3254 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3255 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3256 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3257 GaimGtkImPane *gtkim; |
| 4359 | 3258 |
| 3259 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3260 gtkim = gtkconv->u.im; | |
| 3261 gc = gaim_conversation_get_gc(conv); | |
| 3262 | |
| 3263 /* From right to left... */ | |
| 3264 | |
| 3265 /* Send button */ | |
| 3266 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3267 GAIM_STOCK_SEND, GAIM_CONV_IM); |
| 4359 | 3268 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); |
| 3269 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
| 3270 | |
| 3271 /* Separator */ | |
| 3272 if (gtkim->sep2 != NULL) | |
| 3273 gtk_widget_destroy(gtkim->sep2); | |
| 3274 | |
| 3275 gtkim->sep2 = gtk_vseparator_new(); | |
| 3276 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0); | |
| 3277 gtk_widget_show(gtkim->sep2); | |
| 3278 | |
| 3279 /* Now, um, just kind of all over the place. Huh? */ | |
| 3280 | |
| 3281 /* Warn button */ | |
| 3282 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3283 GAIM_STOCK_WARN, GAIM_CONV_IM); |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3284 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn, |
|
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3285 _("Warn the user"), NULL); |
| 7929 | 3286 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0); |
| 3287 | |
| 3288 /* Block button */ | |
| 3289 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3290 GAIM_STOCK_BLOCK, GAIM_CONV_IM); |
| 7929 | 3291 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block, |
| 3292 _("Block the user"), NULL); | |
| 3293 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0); | |
| 3294 | |
| 3295 /* Add button */ | |
| 3296 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3297 GTK_STOCK_ADD, GAIM_CONV_IM); |
| 7929 | 3298 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add, |
| 3299 _("Add the user to your buddy list"), NULL); | |
| 3300 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0); | |
| 3301 | |
| 3302 /* Remove button */ | |
| 3303 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3304 GTK_STOCK_REMOVE, GAIM_CONV_IM); |
| 7929 | 3305 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove, |
| 3306 _("Remove the user from your buddy list"), NULL); | |
| 3307 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0); | |
| 4359 | 3308 |
| 3309 /* Info button */ | |
| 3310 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info, | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3311 GAIM_STOCK_INFO, GAIM_CONV_IM); |
| 4359 | 3312 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info, |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3313 _("Get the user's information"), NULL); |
| 7929 | 3314 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0); |
| 3315 | |
| 3316 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE); | |
| 3317 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE); | |
| 3318 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); | |
| 3319 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); | |
| 4359 | 3320 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE); |
| 3321 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); | |
| 7929 | 3322 |
| 3323 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn); | |
| 3324 gtk_size_group_add_widget(gtkconv->sg, gtkim->block); | |
| 3325 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); | |
| 3326 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); | |
| 4359 | 3327 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info); |
| 3328 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); | |
| 7929 | 3329 |
| 3330 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1); | |
| 3331 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2); | |
| 3332 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 3); | |
| 3333 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 4); | |
| 3334 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 5); | |
| 4359 | 3335 |
| 3336 gaim_gtkconv_update_buttons_by_protocol(conv); | |
| 3337 | |
| 3338 g_signal_connect(G_OBJECT(gtkim->warn), "clicked", | |
| 3339 G_CALLBACK(warn_cb), conv); | |
| 3340 g_signal_connect(G_OBJECT(gtkim->block), "clicked", | |
| 3341 G_CALLBACK(block_cb), conv); | |
| 7929 | 3342 g_signal_connect(G_OBJECT(gtkconv->add), "clicked", |
| 3343 G_CALLBACK(add_remove_cb), conv); | |
| 3344 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", | |
| 3345 G_CALLBACK(add_remove_cb), conv); | |
| 3346 g_signal_connect(G_OBJECT(gtkconv->info), "clicked", | |
| 3347 G_CALLBACK(info_cb), conv); | |
| 3348 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", | |
| 3349 G_CALLBACK(send_cb), conv); | |
| 4359 | 3350 } |
| 3351 | |
| 3352 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3353 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent) |
| 4359 | 3354 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3355 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3356 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3357 GaimGtkChatPane *gtkchat; |
| 4359 | 3358 |
| 3359 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3360 gtkchat = gtkconv->u.chat; | |
| 3361 gc = gaim_conversation_get_gc(conv); | |
| 3362 | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3363 /* From right to left... */ |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3364 |
| 4359 | 3365 /* Send button */ |
| 3366 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
| 3367 GAIM_STOCK_SEND, GAIM_CONV_CHAT); | |
| 3368 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); | |
| 3369 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
| 3370 | |
| 3371 /* Separator */ | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3372 if (gtkchat->sep != NULL) |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3373 gtk_widget_destroy(gtkchat->sep); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3374 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3375 gtkchat->sep = gtk_vseparator_new(); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3376 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
|
3377 gtk_widget_show(gtkchat->sep); |
| 4359 | 3378 |
| 3379 /* Invite */ | |
| 3380 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite, | |
| 3381 GAIM_STOCK_INVITE, GAIM_CONV_CHAT); | |
| 3382 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite, | |
| 3383 _("Invite a user"), NULL); | |
| 7931 | 3384 gtk_box_pack_start(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0); |
| 4359 | 3385 |
| 7929 | 3386 /* Add button */ |
| 3387 gtkconv->add = gaim_gtk_change_text(_("Add"), gtkconv->add, | |
| 3388 GTK_STOCK_ADD, GAIM_CONV_CHAT); | |
| 3389 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->add, | |
| 3390 _("Add the chat to your buddy list"), NULL); | |
| 3391 gtk_box_pack_start(GTK_BOX(parent), gtkconv->add, FALSE, FALSE, 0); | |
| 3392 | |
| 3393 /* Remove button */ | |
| 3394 gtkconv->remove = gaim_gtk_change_text(_("Remove"), gtkconv->remove, | |
| 3395 GTK_STOCK_REMOVE, GAIM_CONV_CHAT); | |
| 3396 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->remove, | |
| 3397 _("Remove the chat from your buddy list"), NULL); | |
| 3398 gtk_box_pack_start(GTK_BOX(parent), gtkconv->remove, FALSE, FALSE, 0); | |
| 3399 | |
| 4359 | 3400 /* Set the relief on these. */ |
| 3401 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE); | |
| 7929 | 3402 gtk_button_set_relief(GTK_BUTTON(gtkconv->add), GTK_RELIEF_NONE); |
| 3403 gtk_button_set_relief(GTK_BUTTON(gtkconv->remove), GTK_RELIEF_NONE); | |
| 4359 | 3404 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); |
| 3405 | |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3406 gtk_size_group_add_widget(gtkconv->sg, gtkchat->invite); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3407 gtk_size_group_add_widget(gtkconv->sg, gtkconv->add); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3408 gtk_size_group_add_widget(gtkconv->sg, gtkconv->remove); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3409 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3410 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3411 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->add, 1); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3412 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->remove, 3); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3413 gtk_box_reorder_child(GTK_BOX(parent), gtkchat->invite, 3); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3414 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3415 gaim_gtkconv_update_buttons_by_protocol(conv); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
3416 |
| 4359 | 3417 /* Callbacks */ |
| 7929 | 3418 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked", |
| 3419 G_CALLBACK(invite_cb), conv); | |
| 3420 g_signal_connect(G_OBJECT(gtkconv->add), "clicked", | |
| 3421 G_CALLBACK(add_remove_cb), conv); | |
| 3422 g_signal_connect(G_OBJECT(gtkconv->remove), "clicked", | |
| 3423 G_CALLBACK(add_remove_cb), conv); | |
| 4359 | 3424 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", |
| 3425 G_CALLBACK(send_cb), conv); | |
| 3426 } | |
| 3427 | |
| 3428 | |
| 7971 | 3429 static void topic_callback(GtkWidget *w, GaimConversation *conv) |
| 3430 { | |
| 3431 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 3432 GaimConnection *gc; | |
| 3433 GaimGtkConversation *gtkconv; | |
| 3434 GaimGtkChatPane *gtkchat; | |
| 3435 const char *topic; | |
| 3436 | |
| 3437 gc = gaim_conversation_get_gc(conv); | |
| 3438 | |
| 3439 if(!gc || !(prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl))) | |
| 3440 return; | |
| 3441 | |
| 3442 if(prpl_info->set_chat_topic == NULL) | |
| 3443 return; | |
| 3444 | |
| 3445 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3446 gtkchat = gtkconv->u.chat; | |
| 3447 topic = gtk_entry_get_text(GTK_ENTRY(gtkchat->topic_text)); | |
| 3448 | |
| 3449 if(!g_utf8_collate(topic, gaim_conv_chat_get_topic(GAIM_CONV_CHAT(conv)))) | |
| 3450 return; | |
| 3451 | |
| 3452 prpl_info->set_chat_topic(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), topic); | |
| 3453 } | |
| 3454 | |
| 4359 | 3455 static GtkWidget * |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3456 setup_chat_pane(GaimConversation *conv) |
| 4359 | 3457 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3458 GaimPluginProtocolInfo *prpl_info = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3459 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3460 GaimGtkChatPane *gtkchat; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3461 GaimConnection *gc; |
| 8456 | 3462 GaimPlugin *protocol; |
| 4359 | 3463 GtkWidget *vpaned, *hpaned; |
| 3464 GtkWidget *vbox, *hbox; | |
| 3465 GtkWidget *lbox, *bbox; | |
| 3466 GtkWidget *label; | |
| 3467 GtkWidget *list; | |
| 3468 GtkWidget *button; | |
| 7949 | 3469 GtkWidget *sw; |
| 4359 | 3470 GtkListStore *ls; |
| 3471 GtkCellRenderer *rend; | |
| 3472 GtkTreeViewColumn *col; | |
| 8143 | 3473 GList *focus_chain; |
| 4359 | 3474 |
| 3475 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3476 gtkchat = gtkconv->u.chat; | |
| 3477 gc = gaim_conversation_get_gc(conv); | |
| 3478 | |
| 3479 /* Setup the outer pane. */ | |
| 3480 vpaned = gtk_vpaned_new(); | |
| 3481 gtk_widget_show(vpaned); | |
| 3482 | |
| 3483 /* Setup the top part of the pane. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3484 vbox = gtk_vbox_new(FALSE, 6); |
| 4359 | 3485 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE); |
| 3486 gtk_widget_show(vbox); | |
| 3487 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3488 if (gc != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3489 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3490 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3491 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC) |
| 4359 | 3492 { |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3493 hbox = gtk_hbox_new(FALSE, 6); |
|
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3494 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 4359 | 3495 gtk_widget_show(hbox); |
| 3496 | |
| 3497 label = gtk_label_new(_("Topic:")); | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3498 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 4359 | 3499 gtk_widget_show(label); |
| 3500 | |
| 3501 gtkchat->topic_text = gtk_entry_new(); | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3502 |
| 7971 | 3503 if(prpl_info->set_chat_topic == NULL) { |
| 3504 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE); | |
| 3505 } else { | |
| 3506 g_signal_connect(GTK_OBJECT(gtkchat->topic_text), "activate", | |
| 3507 G_CALLBACK(topic_callback), conv); | |
| 3508 } | |
| 3509 | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3510 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0); |
| 4359 | 3511 gtk_widget_show(gtkchat->topic_text); |
| 3512 } | |
| 3513 | |
| 3514 /* Setup the horizontal pane. */ | |
| 3515 hpaned = gtk_hpaned_new(); | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3516 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); |
| 4359 | 3517 gtk_widget_show(hpaned); |
| 3518 | |
| 3519 /* Setup the scrolled window to put gtkimhtml in. */ | |
| 3520 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
| 3521 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 8076 | 3522 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
| 4359 | 3523 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), |
| 3524 GTK_SHADOW_IN); | |
| 3525 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE); | |
| 3526 | |
| 3527 gtk_widget_set_size_request(gtkconv->sw, | |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3528 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3529 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3530 |
| 4359 | 3531 gtk_widget_show(gtkconv->sw); |
| 3532 | |
| 3533 /* Setup gtkihmtml. */ | |
| 3534 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
| 3535 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
| 3536 | |
| 3537 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3538 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 4359 | 3539 |
| 3540 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 3541 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 8105 | 3542 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
| 6057 | 3543 G_CALLBACK(refocus_entry_cb), gtkconv); |
| 8109 | 3544 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
| 3545 G_CALLBACK(refocus_entry_cb), gtkconv); | |
| 4359 | 3546 |
| 3547 gaim_setup_imhtml(gtkconv->imhtml); | |
| 3548 | |
| 3549 gtk_widget_show(gtkconv->imhtml); | |
| 3550 | |
| 3551 /* Build the right pane. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3552 lbox = gtk_vbox_new(FALSE, 6); |
|
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3553 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); |
| 4359 | 3554 gtk_widget_show(lbox); |
| 3555 | |
| 3556 /* Setup the label telling how many people are in the room. */ | |
| 3557 gtkchat->count = gtk_label_new(_("0 people in room")); | |
| 3558 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0); | |
| 3559 gtk_widget_show(gtkchat->count); | |
| 3560 | |
| 3561 /* Setup the list of users. */ | |
| 7949 | 3562 sw = gtk_scrolled_window_new(NULL, NULL); |
| 3563 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
| 8076 | 3564 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
| 7949 | 3565 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
| 3566 gtk_box_pack_start(GTK_BOX(lbox), sw, TRUE, TRUE, 0); | |
| 3567 gtk_widget_show(sw); | |
| 4359 | 3568 |
| 3569 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
| 3570 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
| 3571 GTK_SORT_ASCENDING); | |
| 3572 | |
| 3573 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls)); | |
| 3574 | |
| 3575 rend = gtk_cell_renderer_text_new(); | |
| 3576 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 3577 "text", 0, NULL); | |
| 3578 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
| 3579 | |
| 3580 g_signal_connect(G_OBJECT(list), "button_press_event", | |
| 3581 G_CALLBACK(right_click_chat_cb), conv); | |
| 8143 | 3582 g_signal_connect(G_OBJECT(list), "popup-menu", |
| 3583 G_CALLBACK(gtkconv_chat_popup_menu_cb), conv); | |
| 4359 | 3584 |
| 3585 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3586 | |
| 3587 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 3588 "text", 1, NULL); | |
| 3589 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
| 3590 | |
| 3591 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3592 | |
| 3593 gtk_widget_set_size_request(list, 150, -1); | |
| 3594 | |
| 3595 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE); | |
| 3596 gtk_widget_show(list); | |
| 3597 | |
| 3598 gtkchat->list = list; | |
| 3599 | |
| 7949 | 3600 gtk_container_add(GTK_CONTAINER(sw), list); |
| 4359 | 3601 |
| 3602 /* Setup the user list toolbar. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3603 bbox = gtk_hbox_new(TRUE, 6); |
| 4359 | 3604 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0); |
| 3605 gtk_widget_show(bbox); | |
| 3606 | |
| 3607 /* IM */ | |
| 3608 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO, | |
| 3609 GAIM_BUTTON_VERTICAL); | |
| 3610 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3611 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
|
3612 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL); |
| 4359 | 3613 g_signal_connect(G_OBJECT(button), "clicked", |
| 7961 | 3614 G_CALLBACK(chat_im_button_cb), conv); |
| 4359 | 3615 |
| 3616 gtk_widget_show(button); | |
| 3617 | |
| 3618 /* Ignore */ | |
| 3619 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE, | |
| 3620 GAIM_BUTTON_VERTICAL); | |
| 3621 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3622 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
|
3623 gtk_tooltips_set_tip(gtkconv->tooltips, button, |
|
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3624 _("Ignore the user"), NULL); |
| 4359 | 3625 g_signal_connect(G_OBJECT(button), "clicked", |
| 3626 G_CALLBACK(ignore_cb), conv); | |
| 3627 gtk_widget_show(button); | |
| 3628 | |
| 3629 /* Info */ | |
| 3630 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO, | |
| 3631 GAIM_BUTTON_VERTICAL); | |
| 3632 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3633 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 3634 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3635 _("Get the user's information"), NULL); |
| 4359 | 3636 g_signal_connect(G_OBJECT(button), "clicked", |
| 3637 G_CALLBACK(info_cb), conv); | |
| 3638 | |
| 3639 gtk_widget_show(button); | |
| 3640 | |
| 3641 gtkconv->info = button; | |
| 3642 | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3643 /* Build the toolbar. */ |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3644 vbox = gtk_vbox_new(FALSE, 6); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3645 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3646 gtk_widget_show(vbox); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3647 |
| 8317 | 3648 gtkconv->toolbar = gtk_imhtmltoolbar_new(); |
| 3649 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
|
3650 |
| 8123 | 3651 /* Setup the entry widget. |
| 3652 * We never show the horizontal scrollbar because it was causing weird | |
| 3653 * lockups when typing text just as you type the character that would | |
| 3654 * cause both scrollbars to appear. Definitely seems like a gtk bug. | |
| 3655 */ | |
| 7949 | 3656 sw = gtk_scrolled_window_new(NULL, NULL); |
| 3657 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
| 8112 | 3658 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
| 8061 | 3659 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
| 3660 GTK_SHADOW_IN); | |
| 7949 | 3661 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
| 3662 gtk_widget_show(sw); | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3663 |
| 8061 | 3664 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
| 8456 | 3665 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry), |
| 3666 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")); | |
| 3667 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 3668 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")); | |
| 3669 | |
| 3670 protocol = gaim_find_prpl(conv->account->protocol_id); | |
| 3671 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), | |
| 3672 protocol->info->name); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3673 gtkconv->entry_buffer = |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3674 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
| 8061 | 3675 gaim_setup_imhtml(gtkconv->entry); |
| 3676 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
| 3677 default_formatize(conv); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3678 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3679 GTK_WRAP_WORD_CHAR); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3680 gtk_widget_set_size_request(gtkconv->entry, -1, |
| 8106 | 3681 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height")); |
| 7949 | 3682 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
| 3683 | |
| 3684 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | |
| 8105 | 3685 G_CALLBACK(entry_key_press_cb), conv); |
| 4359 | 3686 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
| 3687 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 3688 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3689 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3690 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3691 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3692 gtkconv->entry); |
| 4359 | 3693 |
| 7949 | 3694 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); |
| 4359 | 3695 gtk_widget_show(gtkconv->entry); |
| 3696 | |
| 3697 /* Setup the bottom button box. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3698 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
| 4359 | 3699 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0); |
| 3700 gtk_widget_show(gtkconv->bbox); | |
| 3701 | |
| 3702 setup_chat_buttons(conv, gtkconv->bbox); | |
| 3703 | |
| 8143 | 3704 focus_chain = g_list_prepend (NULL, sw); |
| 3705 gtk_container_set_focus_chain (GTK_CONTAINER(vbox), focus_chain); | |
| 4359 | 3706 return vpaned; |
| 3707 } | |
| 3708 | |
| 3709 static GtkWidget * | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3710 setup_im_pane(GaimConversation *conv) |
| 4359 | 3711 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3712 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3713 GaimGtkImPane *gtkim; |
| 8456 | 3714 GaimPlugin *protocol; |
| 4359 | 3715 GtkWidget *paned; |
| 3716 GtkWidget *vbox; | |
| 3717 GtkWidget *vbox2; | |
| 7949 | 3718 GtkWidget *sw; |
| 8143 | 3719 GList *focus_chain; |
| 4359 | 3720 |
| 3721 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3722 gtkim = gtkconv->u.im; | |
| 3723 | |
| 3724 /* Setup the outer pane. */ | |
| 3725 paned = gtk_vpaned_new(); | |
| 3726 gtk_widget_show(paned); | |
| 3727 | |
| 3728 /* Setup the top part of the pane. */ | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3729 vbox = gtk_vbox_new(FALSE, 6); |
|
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3730 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
| 4359 | 3731 gtk_widget_show(vbox); |
| 3732 | |
| 3733 /* Setup the gtkimhtml widget. */ | |
| 3734 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
| 3735 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 8076 | 3736 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
| 4359 | 3737 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), |
| 3738 GTK_SHADOW_IN); | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3739 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0); |
| 4851 | 3740 |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3741 gtk_widget_set_size_request(gtkconv->sw, |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3742 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3743 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); |
| 4359 | 3744 gtk_widget_show(gtkconv->sw); |
| 3745 | |
| 3746 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
| 3747 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
| 3748 | |
| 3749 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 3750 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 8105 | 3751 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
| 6057 | 3752 G_CALLBACK(refocus_entry_cb), gtkconv); |
| 8109 | 3753 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
| 3754 G_CALLBACK(refocus_entry_cb), gtkconv); | |
| 4359 | 3755 |
| 3756 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3757 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 4359 | 3758 |
| 3759 gaim_setup_imhtml(gtkconv->imhtml); | |
| 3760 gtk_widget_show(gtkconv->imhtml); | |
| 3761 | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3762 vbox2 = gtk_vbox_new(FALSE, 6); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3763 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3764 gtk_widget_show(vbox2); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3765 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3766 /* Build the toolbar. */ |
| 8317 | 3767 gtkconv->toolbar = gtk_imhtmltoolbar_new(); |
| 3768 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
|
3769 |
| 8123 | 3770 /* Setup the entry widget. |
| 3771 * 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
|
3772 * lockups when typing text just as you type the character that would |
| 8123 | 3773 * cause both scrollbars to appear. Definitely seems like a gtk bug. |
| 3774 */ | |
| 7949 | 3775 sw = gtk_scrolled_window_new(NULL, NULL); |
| 3776 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
| 8112 | 3777 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
| 8061 | 3778 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
| 3779 GTK_SHADOW_IN); | |
| 7949 | 3780 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0); |
| 3781 gtk_widget_show(sw); | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3782 |
| 8061 | 3783 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
| 8456 | 3784 |
| 3785 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 3786 gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")); | |
| 3787 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 3788 gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")); | |
| 3789 | |
| 3790 protocol = gaim_find_prpl(conv->account->protocol_id); | |
| 3791 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), | |
| 3792 protocol->info->name); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3793 gtkconv->entry_buffer = |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3794 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
| 8061 | 3795 gaim_setup_imhtml(gtkconv->entry); |
| 3796 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3797 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
3798 GTK_WRAP_WORD_CHAR); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3799 gtk_widget_set_size_request(gtkconv->entry, -1, |
| 8106 | 3800 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height")); |
| 7949 | 3801 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
|
3802 |
| 4359 | 3803 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", |
| 8105 | 3804 G_CALLBACK(entry_key_press_cb), conv); |
| 4359 | 3805 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
| 3806 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 3807 | |
| 3808 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", | |
| 3809 G_CALLBACK(insert_text_cb), conv); | |
| 3810 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", | |
| 3811 G_CALLBACK(delete_text_cb), conv); | |
| 3812 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3813 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3814 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
| 4359 | 3815 |
| 7949 | 3816 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); |
| 4359 | 3817 gtk_widget_show(gtkconv->entry); |
|
8319
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
3818 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), |
|
a2c5537a814b
[gaim-migrate @ 9043]
Christian Hammond <chipx86@chipx86.com>
parents:
8317
diff
changeset
|
3819 gtkconv->entry); |
| 8481 | 3820 /* had to move this after the imtoolbar is attached so that the |
| 3821 * signals get fired to toggle the buttons on the toolbar as well. | |
| 3822 */ | |
| 3823 default_formatize(conv); | |
| 4359 | 3824 |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
3825 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
| 4359 | 3826 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0); |
| 3827 gtk_widget_show(gtkconv->bbox); | |
| 3828 | |
| 3829 setup_im_buttons(conv, gtkconv->bbox); | |
| 3830 | |
| 8143 | 3831 focus_chain = g_list_prepend (NULL, sw); |
| 3832 gtk_container_set_focus_chain (GTK_CONTAINER(vbox2), focus_chain); | |
| 3833 | |
| 4359 | 3834 return paned; |
| 3835 } | |
| 3836 | |
| 3837 static void | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3838 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
|
3839 GtkSelectionData *sd, guint info, guint t, |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3840 GaimConversation *conv) |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3841 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3842 GaimConvWindow *win = conv->window; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3843 GaimConversation *c; |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3844 |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3845 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3846 { |
| 4781 | 3847 GaimBlistNode *n = NULL; |
| 6695 | 3848 GaimBuddy *b; |
| 4781 | 3849 memcpy(&n, sd->data, sizeof(n)); |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3850 |
| 6695 | 3851 if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
| 3852 b = gaim_contact_get_priority_buddy((GaimContact*)n); | |
| 3853 else if (GAIM_BLIST_NODE_IS_BUDDY(n)) | |
| 3854 b = (GaimBuddy*)n; | |
| 3855 else | |
| 4781 | 3856 return; |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3857 |
|
7089
2cd3756a637b
[gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
3858 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
|
3859 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3860 gaim_conv_window_add_conversation(win, c); |
| 4702 | 3861 } |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3862 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
|
3863 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3864 char *protocol = NULL; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3865 char *username = NULL; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3866 GaimAccount *account; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3867 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3868 if (gaim_gtk_parse_x_im_contact(sd->data, FALSE, &account, |
| 7718 | 3869 &protocol, &username, NULL)) |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3870 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3871 if (account == NULL) |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3872 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3873 gaim_notify_error(NULL, NULL, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3874 _("You are not currently signed on with an account that " |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3875 "can add that buddy."), NULL); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3876 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3877 else |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3878 { |
| 7718 | 3879 c = gaim_conversation_new(GAIM_CONV_IM, account, username); |
| 3880 gaim_conv_window_add_conversation(win, c); | |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3881 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3882 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3883 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3884 if (username != NULL) g_free(username); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3885 if (protocol != NULL) g_free(protocol); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3886 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3887 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3888 } |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3889 } |
| 4359 | 3890 |
| 3891 /************************************************************************** | |
| 3892 * GTK+ window ops | |
| 3893 **************************************************************************/ | |
| 3894 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3895 gaim_gtk_new_window(GaimConvWindow *win) |
| 4359 | 3896 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3897 GaimGtkWindow *gtkwin; |
| 4359 | 3898 GtkPositionType pos; |
| 3899 GtkWidget *testidea; | |
| 3900 GtkWidget *menubar; | |
| 3901 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3902 gtkwin = g_malloc0(sizeof(GaimGtkWindow)); |
| 4359 | 3903 |
| 3904 win->ui_data = gtkwin; | |
| 3905 | |
| 3906 /* Create the window. */ | |
| 3907 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 3908 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation"); | |
| 4635 | 3909 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE); |
|
4510
4c394222c732
[gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents:
4505
diff
changeset
|
3910 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0); |
| 5173 | 3911 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE; |
| 4359 | 3912 gtk_widget_realize(gtkwin->window); |
| 3913 | |
| 3914 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event", | |
| 3915 G_CALLBACK(close_win_cb), win); | |
| 3916 | |
| 3917 /* Create the notebook. */ | |
| 3918 gtkwin->notebook = gtk_notebook_new(); | |
| 3919 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3920 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side"); |
| 4359 | 3921 |
| 3922 #if 0 | |
| 3923 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
| 3924 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
| 3925 #endif | |
| 3926 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); | |
| 3927 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE); | |
| 3928 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook)); | |
| 4818 | 3929 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE); |
| 3930 | |
| 4359 | 3931 gtk_widget_show(gtkwin->notebook); |
| 3932 | |
| 8189 | 3933 g_signal_connect(G_OBJECT(gtkwin->notebook), "switch_page", |
| 3934 G_CALLBACK(before_switch_conv_cb), win); | |
| 4359 | 3935 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page", |
| 3936 G_CALLBACK(switch_conv_cb), win); | |
| 3937 | |
| 3938 /* Setup the tab drag and drop signals. */ | |
| 4486 | 3939 gtk_widget_add_events(gtkwin->notebook, |
| 3940 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); | |
| 3941 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event", | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3942 G_CALLBACK(notebook_press_cb), win); |
| 4486 | 3943 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event", |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3944 G_CALLBACK(notebook_release_cb), win); |
|
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3945 |
| 4359 | 3946 testidea = gtk_vbox_new(FALSE, 0); |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3947 |
| 4359 | 3948 /* Setup the menubar. */ |
| 3949 menubar = setup_menubar(win); | |
| 3950 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0); | |
| 3951 | |
| 3952 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0); | |
| 3953 | |
| 3954 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea); | |
| 3955 | |
| 3956 gtk_widget_show(testidea); | |
| 3957 } | |
| 3958 | |
| 3959 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3960 gaim_gtk_destroy_window(GaimConvWindow *win) |
| 4359 | 3961 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3962 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3963 |
| 3964 gtk_widget_destroy(gtkwin->window); | |
| 3965 | |
| 4630 | 3966 g_object_unref(G_OBJECT(gtkwin->menu.item_factory)); |
| 3967 | |
| 4359 | 3968 g_free(gtkwin); |
| 3969 win->ui_data = NULL; | |
| 3970 } | |
| 3971 | |
| 3972 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3973 gaim_gtk_show(GaimConvWindow *win) |
| 4359 | 3974 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3975 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3976 |
| 3977 gtk_widget_show(gtkwin->window); | |
| 7413 | 3978 |
| 3979 #ifdef _WIN32 | |
| 7415 | 3980 /* This works around a win32 gtk+ bug, where it can't handle |
| 3981 * creating the button correctly before the window is shown. | |
| 3982 * That's why we get the appearance of a button, without all | |
| 3983 * the normal button-like properties, like being able to click | |
| 7413 | 3984 * it. ;-) --Nathan */ |
| 7414 | 3985 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) { |
| 3986 GaimConversation *conv; | |
| 3987 GaimGtkConversation *gtkconv; | |
| 3988 | |
| 3989 conv = gaim_conv_window_get_conversation_at(win, 0); | |
| 3990 if(conv) { | |
| 3991 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7415 | 3992 gtk_widget_hide(gtkconv->close); |
| 7414 | 3993 gtk_widget_show_all(gtkconv->close); |
| 3994 } | |
| 3995 } | |
| 7413 | 3996 #endif |
| 4359 | 3997 } |
| 3998 | |
| 3999 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4000 gaim_gtk_hide(GaimConvWindow *win) |
| 4359 | 4001 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4002 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4003 |
| 4004 gtk_widget_hide(gtkwin->window); | |
| 4005 } | |
| 4006 | |
| 4007 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4008 gaim_gtk_raise(GaimConvWindow *win) |
| 4359 | 4009 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4010 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4011 |
| 5484 | 4012 gtk_widget_show(gtkwin->window); |
| 5103 | 4013 gtk_window_deiconify(GTK_WINDOW(gtkwin->window)); |
| 4526 | 4014 gdk_window_raise(gtkwin->window->window); |
| 4359 | 4015 } |
| 4016 | |
| 4017 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4018 gaim_gtk_flash(GaimConvWindow *win) |
| 4359 | 4019 { |
| 4020 #ifdef _WIN32 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4021 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4022 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4023 wgaim_conv_im_blink(gtkwin->window); |
| 4359 | 4024 #endif |
| 4025 } | |
| 4026 | |
| 4027 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4028 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index) |
| 4359 | 4029 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4030 GaimGtkWindow *gtkwin; |
| 4359 | 4031 |
| 4032 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4033 | |
| 4034 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
| 4035 } | |
| 4036 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4037 static const GtkTargetEntry te[] = |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4038 { |
| 7695 | 4039 {"text/plain", 0, 0}, |
| 4040 {"text/uri-list", 0, 1}, | |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4041 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 2}, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4042 {"STRING", 0, 3}, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
4043 {"application/x-im-contact", 0, 4} |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4044 }; |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4045 |
| 4359 | 4046 static void |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4047 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv) |
| 4359 | 4048 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4049 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4050 GaimGtkConversation *gtkconv, *focus_gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4051 GaimConversation *focus_conv; |
| 4359 | 4052 GtkWidget *pane = NULL; |
| 4053 GtkWidget *tab_cont; | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4054 GtkWidget *tabby, *menu_tabby; |
| 4359 | 4055 gboolean new_ui; |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4056 GaimConversationType conv_type; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4057 const char *name; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4058 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4059 name = gaim_conversation_get_name(conv); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4060 conv_type = gaim_conversation_get_type(conv); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4061 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4062 |
| 4063 if (conv->ui_data != NULL) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4064 gtkconv = (GaimGtkConversation *)conv->ui_data; |
| 4359 | 4065 |
| 4066 tab_cont = gtkconv->tab_cont; | |
| 4067 | |
| 4068 new_ui = FALSE; | |
| 4069 } | |
| 4070 else { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4071 gtkconv = g_malloc0(sizeof(GaimGtkConversation)); |
| 4359 | 4072 conv->ui_data = gtkconv; |
| 4073 | |
| 4074 /* Setup some initial variables. */ | |
| 4075 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
| 4076 gtkconv->tooltips = gtk_tooltips_new(); | |
| 4077 | |
| 4421 | 4078 /* Setup the foreground and background colors */ |
| 4079 gaim_gtkconv_update_font_colors(conv); | |
| 4080 | |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4081 /* Setup the font face */ |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4082 gaim_gtkconv_update_font_face(conv); |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4083 |
| 7879 | 4084 if (conv_type == GAIM_CONV_IM) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4085 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane)); |
| 4359 | 4086 gtkconv->u.im->a_virgin = TRUE; |
| 4087 | |
| 4088 pane = setup_im_pane(conv); | |
| 4089 } | |
| 7879 | 4090 else if (conv_type == GAIM_CONV_CHAT) { |
| 4091 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane)); | |
| 4092 | |
| 4093 pane = setup_chat_pane(conv); | |
| 4094 } | |
| 4359 | 4095 |
| 4096 if (pane == NULL) { | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4097 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat); |
|
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4098 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im); |
| 4359 | 4099 |
| 4100 g_free(gtkconv); | |
| 4101 conv->ui_data = NULL; | |
| 4102 | |
| 4103 return; | |
| 4104 } | |
| 4105 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4106 /* Setup drag-and-drop */ |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4107 gtk_drag_dest_set(pane, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4108 GTK_DEST_DEFAULT_MOTION | |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4109 GTK_DEST_DEFAULT_DROP, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4110 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4111 GDK_ACTION_COPY); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4112 gtk_drag_dest_set(gtkconv->imhtml, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4113 GTK_DEST_DEFAULT_MOTION | |
| 4702 | 4114 GTK_DEST_DEFAULT_DROP, |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4115 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4116 GDK_ACTION_DEFAULT | GDK_ACTION_COPY | |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4117 GDK_ACTION_MOVE); |
| 7695 | 4118 gtk_drag_dest_set(gtkconv->entry, |
| 4119 GTK_DEST_DEFAULT_MOTION | | |
| 4120 GTK_DEST_DEFAULT_DROP, | |
| 4121 te, sizeof(te) / sizeof(GtkTargetEntry), | |
| 4122 GDK_ACTION_COPY); | |
| 4123 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4124 g_signal_connect(G_OBJECT(pane), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4125 G_CALLBACK(conv_dnd_recv), conv); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4126 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4127 G_CALLBACK(conv_dnd_recv), conv); |
| 8105 | 4128 #if 0 |
| 4129 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", | |
| 4130 G_CALLBACK(conv_dnd_recv), conv); | |
| 4131 #endif | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4132 |
| 4359 | 4133 /* Setup the container for the tab. */ |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4134 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 6); |
|
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4135 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 6); |
| 4359 | 4136 gtk_container_add(GTK_CONTAINER(tab_cont), pane); |
| 4137 gtk_widget_show(pane); | |
| 4138 | |
| 4139 new_ui = TRUE; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4140 |
| 4359 | 4141 gtkconv->make_sound = TRUE; |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
4142 |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4143 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4144 "/gaim/gtk/conversations/show_formatting_toolbar"); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4145 |
|
8329
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4146 if (gtkconv->show_formatting_toolbar) |
|
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4147 gtk_widget_show(gtkconv->toolbar); |
|
9dd7c75ed433
[gaim-migrate @ 9053]
Christian Hammond <chipx86@chipx86.com>
parents:
8319
diff
changeset
|
4148 |
| 8176 | 4149 g_signal_connect_swapped(G_OBJECT(pane), "focus", |
| 4150 G_CALLBACK(gtk_widget_grab_focus), | |
| 4151 gtkconv->entry); | |
| 4359 | 4152 } |
| 4153 | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4154 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 6); |
|
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
4155 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 6); |
| 4359 | 4156 |
| 4157 /* Close button. */ | |
| 4158 gtkconv->close = gtk_button_new(); | |
| 4159 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
|
4160 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE); |
| 4359 | 4161 gtk_container_add(GTK_CONTAINER(gtkconv->close), |
| 4445 | 4162 gtk_image_new_from_stock(GTK_STOCK_CLOSE, |
| 4163 GTK_ICON_SIZE_MENU)); | |
| 4359 | 4164 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4165 _("Close conversation"), NULL); |
| 4359 | 4166 |
| 4167 g_signal_connect(G_OBJECT(gtkconv->close), "clicked", | |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4168 G_CALLBACK(close_conv_cb), conv); |
| 4359 | 4169 |
|
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4170 /* |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4171 * 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
|
4172 * border bug. I love you guys! -- ChipX86 |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4173 */ |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4174 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed", |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4175 G_CALLBACK(tab_close_button_state_changed_cb), NULL); |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4176 |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4177 /* Status icon. */ |
| 6440 | 4178 gtkconv->icon = gtk_image_new(); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4179 gtkconv->menu_icon = gtk_image_new(); |
| 6440 | 4180 update_tab_icon(conv); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4181 |
| 4359 | 4182 /* Tab label. */ |
| 4183 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
|
4184 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); |
| 4359 | 4185 #if 0 |
| 4186 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); | |
| 4187 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); | |
| 4188 #endif | |
| 4189 | |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
4190 |
| 4359 | 4191 /* Pack it all together. */ |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4192 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
|
4193 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4194 FALSE, FALSE, 0); |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4195 |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4196 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4197 { |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4198 gtk_widget_show_all(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4199 gtk_widget_show_all(gtkconv->menu_icon); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4200 } |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4201 |
| 4359 | 4202 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
|
4203 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); |
| 4445 | 4204 gtk_widget_show(gtkconv->tab_label); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4205 gtk_widget_show(gtkconv->menu_label); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4206 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
|
4207 |
| 4445 | 4208 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
|
4209 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) |
| 4445 | 4210 gtk_widget_show_all(gtkconv->close); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4211 |
| 4445 | 4212 gtk_widget_show(tabby); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4213 gtk_widget_show(menu_tabby); |
| 4359 | 4214 |
| 7143 | 4215 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
| 4216 gaim_gtkconv_update_buddy_icon(conv); | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4217 |
| 4359 | 4218 /* Add this pane to the conversations notebook. */ |
| 4219 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
|
4220 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4221 tab_cont, menu_tabby); |
| 4359 | 4222 |
| 4223 gtk_widget_show(tab_cont); | |
| 4224 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4225 if (gaim_conv_window_get_conversation_count(win) == 1) { |
| 4818 | 4226 /* Er, bug in notebooks? Switch to the page manually. */ |
| 4359 | 4227 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0); |
| 4851 | 4228 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4229 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4230 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4231 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4232 else |
| 4818 | 4233 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE); |
| 4359 | 4234 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4235 focus_conv = g_list_nth_data(gaim_conv_window_get_conversations(win), |
| 5204 | 4236 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook))); |
| 4237 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv); | |
| 4238 gtk_widget_grab_focus(focus_gtkconv->entry); | |
| 4359 | 4239 |
| 4240 if (!new_ui) | |
| 4241 g_object_unref(gtkconv->tab_cont); | |
| 4242 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4243 if (gaim_conv_window_get_conversation_count(win) == 1) |
| 4685 | 4244 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 4245 } |
| 4246 | |
| 4247 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4248 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv) |
| 4359 | 4249 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4250 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4251 GaimGtkConversation *gtkconv; |
| 4359 | 4252 unsigned int index; |
| 4818 | 4253 GaimConversationType conv_type; |
| 4254 | |
| 4255 conv_type = gaim_conversation_get_type(conv); | |
| 4359 | 4256 index = gaim_conversation_get_index(conv); |
| 4257 | |
| 4258 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4259 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4260 | |
| 4261 g_object_ref(gtkconv->tab_cont); | |
| 4262 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont)); | |
| 4263 | |
| 4264 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
| 4265 | |
| 4818 | 4266 /* go back to tabless if need be */ |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4267 if (gaim_conv_window_get_conversation_count(win) <= 2) { |
| 4818 | 4268 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4269 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
| 4818 | 4270 } |
| 4271 | |
| 4272 | |
| 4359 | 4273 /* If this window is setup with an inactive gc, regenerate the menu. */ |
| 4818 | 4274 if (conv_type == GAIM_CONV_IM && |
| 4359 | 4275 gaim_conversation_get_gc(conv) == NULL) { |
| 4276 | |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
4277 generate_send_as_items(win, conv); |
| 4359 | 4278 } |
| 4279 } | |
| 4280 | |
| 4281 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4282 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv, |
| 4359 | 4283 unsigned int new_index) |
| 4284 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4285 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4286 GaimGtkConversation *gtkconv; |
| 4359 | 4287 |
| 4288 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4289 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4290 | |
|
4415
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4291 if (new_index > gaim_conversation_get_index(conv)) |
|
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4292 new_index--; |
|
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4293 |
| 4359 | 4294 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook), |
| 4295 gtkconv->tab_cont, new_index); | |
| 4296 } | |
| 4297 | |
| 4298 static int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4299 gaim_gtk_get_active_index(const GaimConvWindow *win) |
| 4359 | 4300 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4301 GaimGtkWindow *gtkwin; |
|
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4302 int index; |
| 4359 | 4303 |
| 4304 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4305 | |
|
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4306 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)); |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4307 |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4308 /* |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4309 * A fix, because the first conversation may be active, but not |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4310 * appear in the notebook just yet. -- ChipX86 |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4311 */ |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4312 return (index == -1 ? 0 : index); |
| 4359 | 4313 } |
| 4314 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4315 static GaimConvWindowUiOps window_ui_ops = |
| 4359 | 4316 { |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4317 gaim_gtk_conversations_get_conv_ui_ops, |
| 4359 | 4318 gaim_gtk_new_window, |
| 4319 gaim_gtk_destroy_window, | |
| 4320 gaim_gtk_show, | |
| 4321 gaim_gtk_hide, | |
| 4322 gaim_gtk_raise, | |
| 4323 gaim_gtk_flash, | |
| 4324 gaim_gtk_switch_conversation, | |
| 4325 gaim_gtk_add_conversation, | |
| 4326 gaim_gtk_remove_conversation, | |
| 4327 gaim_gtk_move_conversation, | |
| 4328 gaim_gtk_get_active_index | |
| 4329 }; | |
| 4330 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4331 GaimConvWindowUiOps * |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4332 gaim_gtk_conversations_get_win_ui_ops(void) |
| 4359 | 4333 { |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4334 return &window_ui_ops; |
| 4359 | 4335 } |
| 4336 | |
| 4337 /************************************************************************** | |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4338 * Conversation UI operations |
| 4359 | 4339 **************************************************************************/ |
| 4340 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4341 gaim_gtkconv_destroy(GaimConversation *conv) |
| 4359 | 4342 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4343 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4359 | 4344 |
| 4345 if (gtkconv->dialogs.log != NULL) | |
| 4346 gtk_widget_destroy(gtkconv->dialogs.log); | |
| 4347 | |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4348 gtk_widget_destroy(gtkconv->tab_cont); |
| 4892 | 4349 g_object_unref(gtkconv->tab_cont); |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4350 |
| 4359 | 4351 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 4755 | 4352 if (gtkconv->u.im->icon_timer != 0) |
| 4353 g_source_remove(gtkconv->u.im->icon_timer); | |
| 4354 | |
| 4359 | 4355 if (gtkconv->u.im->save_icon != NULL) |
| 4356 gtk_widget_destroy(gtkconv->u.im->save_icon); | |
| 4357 | |
| 4358 if (gtkconv->u.im->anim != NULL) | |
| 4793 | 4359 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 4359 | 4360 |
| 4361 g_free(gtkconv->u.im); | |
| 4362 } | |
| 4363 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 4364 g_free(gtkconv->u.chat); | |
| 4365 } | |
| 4366 | |
| 4633 | 4367 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips)); |
| 4368 | |
| 4359 | 4369 g_free(gtkconv); |
| 4370 } | |
| 4371 | |
| 4372 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4373 gaim_gtkconv_write_im(GaimConversation *conv, const char *who, |
| 6982 | 4374 const char *message, GaimMessageFlags flags, |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4375 time_t mtime) |
| 4359 | 4376 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4377 GaimGtkConversation *gtkconv; |
| 4359 | 4378 |
| 4379 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4380 | |
| 6621 | 4381 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4382 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4383 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4384 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4385 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4386 |
|
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4387 /* Play a sound, if specified in prefs. */ |
| 4359 | 4388 if (gtkconv->make_sound) { |
| 6621 | 4389 if (flags & GAIM_MESSAGE_RECV) { |
| 4359 | 4390 if (gtkconv->u.im->a_virgin && |
| 5820 | 4391 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) { |
| 4359 | 4392 |
| 4561 | 4393 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE); |
| 4359 | 4394 } |
| 4395 else | |
| 4561 | 4396 gaim_sound_play_event(GAIM_SOUND_RECEIVE); |
| 4359 | 4397 } |
| 4398 else { | |
| 4561 | 4399 gaim_sound_play_event(GAIM_SOUND_SEND); |
| 4359 | 4400 } |
| 4401 } | |
| 4402 | |
| 4403 gtkconv->u.im->a_virgin = FALSE; | |
| 4404 | |
| 6982 | 4405 gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4406 } |
| 4407 | |
| 4408 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4409 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who, |
| 6621 | 4410 const char *message, GaimMessageFlags flags, time_t mtime) |
| 4359 | 4411 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4412 GaimGtkConversation *gtkconv; |
| 4359 | 4413 |
| 4414 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4415 | |
|
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4416 /* Play a sound, if specified in prefs. */ |
| 4359 | 4417 if (gtkconv->make_sound) { |
| 6621 | 4418 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND)) |
| 4561 | 4419 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY); |
| 6621 | 4420 else if (flags & GAIM_MESSAGE_RECV) { |
| 4421 if ((flags & GAIM_MESSAGE_NICK) && | |
| 8573 | 4422 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said") && |
| 4423 !(flags & GAIM_MESSAGE_SYSTEM)) { | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4424 |
| 4561 | 4425 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4426 } |
| 4359 | 4427 else |
| 4561 | 4428 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY); |
| 4359 | 4429 } |
| 4430 } | |
| 4431 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4432 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks")) |
| 6621 | 4433 flags |= GAIM_MESSAGE_COLORIZE; |
| 4359 | 4434 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4435 /* Raise the window, if specified in prefs. */ |
| 6621 | 4436 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4437 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4438 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4439 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4440 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4441 |
| 6982 | 4442 gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4443 } |
| 4444 | |
| 4445 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4446 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who, |
| 6982 | 4447 const char *message, GaimMessageFlags flags, |
| 4359 | 4448 time_t mtime) |
| 4449 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4450 GaimGtkConversation *gtkconv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4451 GaimConvWindow *win; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4452 GaimConnection *gc; |
| 4359 | 4453 int gtk_font_options = 0; |
| 6982 | 4454 GSList *images = NULL; |
| 7440 | 4455 char buf[BUF_LONG]; |
| 4359 | 4456 char buf2[BUF_LONG]; |
| 4457 char mdate[64]; | |
| 4458 char color[10]; | |
| 4459 char *str; | |
| 4460 char *with_font_tag; | |
| 4896 | 4461 char *sml_attrib = NULL; |
| 6982 | 4462 size_t length = strlen(message) + 1; |
| 4895 | 4463 |
| 4359 | 4464 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4465 gc = gaim_conversation_get_gc(conv); | |
| 4466 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4467 win = gaim_conversation_get_window(conv); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4468 |
| 6621 | 4469 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
| 7431 | 4470 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
| 4471 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) || | |
| 4472 (gaim_conversation_get_type(conv) == GAIM_CONV_IM && | |
| 4473 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") || | |
| 4474 gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))))) { | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4475 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4476 gaim_conv_window_show(win); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4477 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4478 |
| 7078 | 4479 if (flags & GAIM_MESSAGE_IMAGES) |
| 4480 gaim_gtk_find_images(message, &images); | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4481 |
| 5133 | 4482 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */ |
| 4483 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime)); | |
| 4484 else | |
| 4485 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); | |
| 4359 | 4486 |
| 4896 | 4487 if(gc) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4488 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name); |
| 7440 | 4489 |
| 4359 | 4490 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS; |
| 4491 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4492 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors")) |
| 4359 | 4493 gtk_font_options ^= GTK_IMHTML_NO_COLOURS; |
| 4494 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4495 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts")) |
| 4359 | 4496 gtk_font_options ^= GTK_IMHTML_NO_FONTS; |
| 4497 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4498 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes")) |
| 4359 | 4499 gtk_font_options ^= GTK_IMHTML_NO_SIZES; |
| 4500 | |
| 7956 | 4501 /* this is gonna crash one day, I can feel it. */ |
| 4502 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol_id(conv->account)))->options & | |
| 7431 | 4503 OPT_PROTO_USE_POINTSIZE) { |
| 5367 | 4504 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE; |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4505 } |
| 4359 | 4506 |
| 6621 | 4507 if (flags & GAIM_MESSAGE_SYSTEM) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4508 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
| 8380 | 4509 g_snprintf(buf, BUF_LONG, "<FONT SIZE=\"2\">(%s)</FONT> <B>%s</B>", |
| 7431 | 4510 mdate, message); |
| 4359 | 4511 else |
| 4512 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message); | |
| 7440 | 4513 |
| 4359 | 4514 g_snprintf(buf2, sizeof(buf2), |
| 8408 | 4515 "<FONT %s><FONT SIZE=\"2\"><!--(%s) --></FONT><B>%s</B></FONT><BR>", |
| 7850 | 4516 sml_attrib, mdate, message); |
| 7440 | 4517 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4518 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4519 buf2, 0, images); |
| 7440 | 4520 |
| 7583 | 4521 /* Add the message to a conversations scrollback buffer */ |
| 4522 conv->history = g_string_append(conv->history, buf); | |
| 4523 conv->history = g_string_append(conv->history, "<BR>\n"); | |
| 7440 | 4524 |
| 7431 | 4525 } else if (flags & GAIM_MESSAGE_NO_LOG) { |
| 4359 | 4526 g_snprintf(buf, BUF_LONG, |
| 7850 | 4527 "<B><FONT %s COLOR=\"#777777\">%s</FONT></B><BR>", |
| 4528 sml_attrib, message); | |
| 7440 | 4529 |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4530 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4531 buf, 0, images); |
| 4359 | 4532 } |
| 4533 else { | |
| 4895 | 4534 char *new_message = g_memdup(message, length); |
| 7440 | 4535 |
| 6621 | 4536 if (flags & GAIM_MESSAGE_WHISPER) { |
| 4359 | 4537 str = g_malloc(1024); |
| 7440 | 4538 |
| 4359 | 4539 /* If we're whispering, it's not an autoresponse. */ |
| 7564 | 4540 if (gaim_message_meify(new_message, length)) { |
| 4359 | 4541 g_snprintf(str, 1024, "***%s", who); |
| 4542 strcpy(color, "#6C2585"); | |
| 4543 } | |
| 4544 else { | |
| 4545 g_snprintf(str, 1024, "*%s*:", who); | |
| 4546 strcpy(color, "#00FF00"); | |
| 4547 } | |
| 7440 | 4548 } |
| 4359 | 4549 else { |
| 7564 | 4550 if (gaim_message_meify(new_message, length)) { |
| 4359 | 4551 str = g_malloc(1024); |
| 7440 | 4552 |
| 6621 | 4553 if (flags & GAIM_MESSAGE_AUTO_RESP) |
| 4359 | 4554 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who); |
| 4555 else | |
| 4556 g_snprintf(str, 1024, "***%s", who); | |
| 7440 | 4557 |
| 6621 | 4558 if (flags & GAIM_MESSAGE_NICK) |
| 4359 | 4559 strcpy(color, "#AF7F00"); |
| 4560 else | |
| 4561 strcpy(color, "#062585"); | |
| 4562 } | |
| 4563 else { | |
| 4564 str = g_malloc(1024); | |
| 6621 | 4565 if (flags & GAIM_MESSAGE_AUTO_RESP) |
| 4359 | 4566 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE); |
| 4567 else | |
| 4568 g_snprintf(str, 1024, "%s:", who); | |
| 6621 | 4569 if (flags & GAIM_MESSAGE_NICK) |
| 4359 | 4570 strcpy(color, "#AF7F00"); |
| 6621 | 4571 else if (flags & GAIM_MESSAGE_RECV) { |
| 4572 if (flags & GAIM_MESSAGE_COLORIZE) { | |
| 4359 | 4573 const char *u; |
| 4574 int m = 0; | |
| 7440 | 4575 |
| 4359 | 4576 for (u = who; *u != '\0'; u++) |
| 4577 m += *u; | |
| 7440 | 4578 |
| 4359 | 4579 m = m % NUM_NICK_COLORS; |
| 7440 | 4580 |
| 4359 | 4581 strcpy(color, nick_colors[m]); |
| 4582 } | |
| 4583 else | |
| 7854 | 4584 strcpy(color, RECV_COLOR); |
| 4359 | 4585 } |
| 6621 | 4586 else if (flags & GAIM_MESSAGE_SEND) |
| 7854 | 4587 strcpy(color, SEND_COLOR); |
| 4359 | 4588 } |
| 4589 } | |
| 7440 | 4590 |
|
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")) |
| 4359 | 4592 g_snprintf(buf, BUF_LONG, |
| 8380 | 4593 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\">(%s)</FONT> " |
| 7431 | 4594 "<B>%s</B></FONT> ", color, |
| 4595 sml_attrib ? sml_attrib : "", mdate, str); | |
| 4359 | 4596 else |
| 4597 g_snprintf(buf, BUF_LONG, | |
| 7431 | 4598 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color, |
| 4599 sml_attrib ? sml_attrib : "", str); | |
| 7440 | 4600 |
| 4359 | 4601 g_snprintf(buf2, BUF_LONG, |
| 8380 | 4602 "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--(%s) --></FONT>" |
| 7431 | 4603 "<B>%s</B></FONT> ", |
| 4604 color, sml_attrib ? sml_attrib : "", mdate, str); | |
| 7440 | 4605 |
| 4359 | 4606 g_free(str); |
| 4607 | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4608 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4609 buf2, 0, images); |
| 4359 | 4610 |
| 4895 | 4611 if(gc){ |
| 4896 | 4612 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : ""); |
| 4895 | 4613 char *post = "</font>"; |
| 4614 int pre_len = strlen(pre); | |
| 4615 int post_len = strlen(post); | |
| 7440 | 4616 |
| 4895 | 4617 with_font_tag = g_malloc(length + pre_len + post_len + 1); |
| 7440 | 4618 |
| 4895 | 4619 strcpy(with_font_tag, pre); |
| 4620 memcpy(with_font_tag + pre_len, new_message, length); | |
| 4621 strcpy(with_font_tag + pre_len + length, post); | |
| 7440 | 4622 |
| 4895 | 4623 length += pre_len + post_len; |
| 4624 g_free(pre); | |
| 4625 } | |
| 4608 | 4626 else |
| 4895 | 4627 with_font_tag = g_memdup(new_message, length); |
| 7440 | 4628 |
| 7589 | 4629 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
| 7431 | 4630 with_font_tag, gtk_font_options, images); |
| 7440 | 4631 |
| 6982 | 4632 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0); |
| 7440 | 4633 |
| 8557 | 4634 conv->history = g_string_append(conv->history, buf); |
| 4635 conv->history = g_string_append(conv->history, new_message); | |
| 4636 conv->history = g_string_append(conv->history, "<BR>\n"); | |
| 7440 | 4637 |
| 4638 g_free(with_font_tag); | |
| 7447 | 4639 g_free(new_message); |
| 7440 | 4640 } |
| 4641 | |
| 6062 | 4642 |
| 5012 | 4643 if(sml_attrib) |
| 4644 g_free(sml_attrib); | |
| 6982 | 4645 |
| 4646 if (images) { | |
| 7078 | 4647 GSList *tmp; |
| 4648 | |
| 4649 for (tmp = images; tmp; tmp = tmp->next) { | |
| 4650 GdkPixbuf *pixbuf = tmp->data; | |
| 4651 if(pixbuf) | |
| 4652 g_object_unref(pixbuf); | |
| 6982 | 4653 } |
| 7078 | 4654 |
| 6982 | 4655 g_slist_free(images); |
| 4656 } | |
| 4359 | 4657 } |
| 4658 | |
| 4659 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4660 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user) |
| 4359 | 4661 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4662 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4663 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4664 GaimGtkChatPane *gtkchat; |
| 4359 | 4665 char tmp[BUF_LONG]; |
| 4666 int num_users; | |
| 4667 int pos; | |
| 4668 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4669 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4670 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4671 gtkchat = gtkconv->u.chat; | |
| 4672 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4673 num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
| 4359 | 4674 |
| 4675 g_snprintf(tmp, sizeof(tmp), | |
| 4676 ngettext("%d person in room", "%d people in room", | |
| 4677 num_users), | |
| 4678 num_users); | |
| 4679 | |
| 4680 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
| 4681 | |
| 4682 if (gtkconv->make_sound) | |
| 4561 | 4683 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN); |
| 4359 | 4684 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4685 pos = g_list_index(gaim_conv_chat_get_users(chat), user); |
| 4359 | 4686 |
| 4687 add_chat_buddy_common(conv, user, pos); | |
| 4688 } | |
| 4689 | |
| 4690 static void | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4691 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4692 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4693 GaimConvChat *chat; |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4694 GaimGtkConversation *gtkconv; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4695 GaimGtkChatPane *gtkchat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4696 GList *l; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4697 char tmp[BUF_LONG]; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4698 int num_users; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4699 int pos; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4700 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4701 chat = GAIM_CONV_CHAT(conv); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4702 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4703 gtkchat = gtkconv->u.chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4704 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4705 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
|
4706 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4707 g_snprintf(tmp, sizeof(tmp), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4708 ngettext("%d person in room", "%d people in room", |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4709 num_users), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4710 num_users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4711 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4712 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4713 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4714 for (l = users; l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4715 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
|
4716 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4717 add_chat_buddy_common(conv, (char *)l->data, pos); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4718 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4719 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4720 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4721 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4722 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name, |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4723 const char *new_name) |
| 4359 | 4724 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4725 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4726 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4727 GaimGtkChatPane *gtkchat; |
| 4359 | 4728 GtkTreeIter iter; |
| 4729 GtkTreeModel *model; | |
| 4730 GList *names; | |
| 4731 int pos; | |
| 4732 int f = 1; | |
| 4733 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4734 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4735 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4736 gtkchat = gtkconv->u.chat; | |
| 4737 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4738 for (names = gaim_conv_chat_get_users(chat); |
| 4359 | 4739 names != NULL; |
| 4740 names = names->next) { | |
| 4741 | |
| 4742 char *u = (char *)names->data; | |
| 4743 | |
| 4793 | 4744 if (!gaim_utf8_strcasecmp(u, old_name)) { |
| 4359 | 4745 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
| 4746 | |
| 4747 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
| 4748 break; | |
| 4749 | |
| 4750 while (f != 0) { | |
| 4751 char *val; | |
| 4752 | |
| 4753 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
| 4754 | |
| 4793 | 4755 if (!gaim_utf8_strcasecmp(old_name, val)) { |
| 4359 | 4756 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 4640 | 4757 break; |
| 4758 } | |
| 4359 | 4759 |
| 4760 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
| 4761 | |
| 4762 g_free(val); | |
| 4763 } | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4764 |
| 4359 | 4765 break; |
| 4766 } | |
| 4767 } | |
| 4768 | |
| 4769 if (!names) | |
| 4770 return; | |
| 4771 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4772 pos = g_list_index(gaim_conv_chat_get_users(chat), new_name); |
| 4359 | 4773 |
| 4774 add_chat_buddy_common(conv, new_name, pos); | |
| 4775 } | |
| 4776 | |
| 4777 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4778 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user) |
| 4359 | 4779 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4780 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4781 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4782 GaimGtkChatPane *gtkchat; |
| 4359 | 4783 GtkTreeIter iter; |
| 4784 GtkTreeModel *model; | |
| 4785 GList *names; | |
| 4786 char tmp[BUF_LONG]; | |
| 4787 int num_users; | |
| 4788 int f = 1; | |
| 4789 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4790 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4791 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4792 gtkchat = gtkconv->u.chat; | |
| 4793 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4794 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
|
4795 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4796 for (names = gaim_conv_chat_get_users(chat); |
| 4359 | 4797 names != NULL; |
| 4798 names = names->next) { | |
| 4799 | |
| 4800 char *u = (char *)names->data; | |
| 4801 | |
| 4793 | 4802 if (!gaim_utf8_strcasecmp(u, user)) { |
| 4359 | 4803 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
| 4804 | |
| 4805 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
| 4806 break; | |
| 4807 | |
| 4808 while (f != 0) { | |
| 4809 char *val; | |
| 4810 | |
| 4811 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
| 4812 | |
| 4793 | 4813 if (!gaim_utf8_strcasecmp(user, val)) |
| 4359 | 4814 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 4815 | |
| 4816 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
| 4817 | |
| 4818 g_free(val); | |
| 4819 } | |
| 4820 | |
| 4821 break; | |
| 4822 } | |
| 4823 } | |
| 4824 | |
| 4825 if (names == NULL) | |
| 4826 return; | |
| 4827 | |
| 4828 g_snprintf(tmp, sizeof(tmp), | |
| 4829 ngettext("%d person in room", "%d people in room", | |
| 4830 num_users), num_users); | |
| 4831 | |
| 4832 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
| 4833 | |
| 4834 if (gtkconv->make_sound) | |
| 4561 | 4835 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE); |
| 4359 | 4836 } |
| 4837 | |
| 4838 static void | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4839 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4840 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4841 GaimConvChat *chat; |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4842 GaimGtkConversation *gtkconv; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4843 GaimGtkChatPane *gtkchat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4844 GtkTreeIter iter; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4845 GtkTreeModel *model; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4846 GList *names = NULL; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4847 GList *l; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4848 char tmp[BUF_LONG]; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4849 int num_users; |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4850 gboolean f; |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4851 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4852 chat = GAIM_CONV_CHAT(conv); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4853 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4854 gtkchat = gtkconv->u.chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4855 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4856 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
|
4857 g_list_length(users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4858 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4859 for (l = users; l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4860 for (names = gaim_conv_chat_get_users(chat); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4861 names != NULL; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4862 names = names->next) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4863 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4864 char *u = (char *)names->data; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4865 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4866 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4867 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4868 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4869 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4870 &iter)) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4871 break; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4872 |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4873 do { |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4874 char *val; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4875 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4876 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4877 1, &val, -1); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4878 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4879 if (!gaim_utf8_strcasecmp((char *)l->data, val)) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4880 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4881 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4882 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4883 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4884 g_free(val); |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
4885 } while (f); |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
4886 |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4887 break; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4888 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4889 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4890 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4891 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4892 if (names == NULL) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4893 return; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4894 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4895 g_snprintf(tmp, sizeof(tmp), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4896 ngettext("%d person in room", "%d people in room", |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4897 num_users), num_users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4898 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4899 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4900 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4901 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4902 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4903 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) |
| 4359 | 4904 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4905 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4906 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4907 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4908 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4909 GaimConvChat *chat; |
| 4359 | 4910 |
| 4911 win = gaim_conversation_get_window(conv); | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4912 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4913 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4914 | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4915 if (type == GAIM_CONV_UPDATE_ACCOUNT) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4916 { |
| 4359 | 4917 gaim_conversation_autoset_title(conv); |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4918 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4919 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4920 gaim_gtkconv_update_buddy_icon(conv); |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4921 |
| 4359 | 4922 gaim_gtkconv_update_buttons_by_protocol(conv); |
| 4923 | |
| 4685 | 4924 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 4925 |
| 4926 smiley_themeize(gtkconv->imhtml); | |
| 6394 | 4927 |
| 6395 | 4928 update_tab_icon(conv); |
| 4359 | 4929 } |
| 4930 else if (type == GAIM_CONV_UPDATE_TYPING || | |
|
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4931 type == GAIM_CONV_UPDATE_UNSEEN || |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4932 type == GAIM_CONV_UPDATE_TITLE) |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4933 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4934 const char *title; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4935 GaimConvIm *im = NULL; |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4936 char color[8]; |
| 4736 | 4937 |
| 4359 | 4938 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4939 im = GAIM_CONV_IM(conv); |
| 4359 | 4940 |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4941 title = gaim_conversation_get_title(conv); |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4942 |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4943 *color = '\0'; |
| 4359 | 4944 |
| 4945 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) | |
| 4946 gtk_widget_realize(gtkconv->tab_label); | |
| 4947 | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4948 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
|
4949 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4950 strcpy(color, "#47A046"); |
| 4359 | 4951 } |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4952 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
|
4953 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4954 strcpy(color, "#D1940C"); |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4955 } |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4956 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4957 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4958 strcpy(color, "#314E6C"); |
| 4359 | 4959 } |
| 8252 | 4960 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT) |
| 4961 { | |
| 4962 strcpy(color, "#DF421E"); | |
| 4963 } | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4964 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4965 { |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4966 strcpy(color, "#868272"); |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4967 } |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4968 |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4969 if (*color != '\0') |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4970 { |
| 8536 | 4971 char *html_title,*label; |
| 4972 | |
| 4973 html_title = gaim_escape_html(title); | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4974 |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4975 label = g_strdup_printf("<span color=\"%s\">%s</span>", |
| 8536 | 4976 color, html_title); |
| 4977 g_free(html_title); | |
|
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4978 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label); |
|
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4979 g_free(label); |
| 4359 | 4980 } |
|
7995
87d3260f961a
[gaim-migrate @ 8672]
Christian Hammond <chipx86@chipx86.com>
parents:
7990
diff
changeset
|
4981 else |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4982 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4983 |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4984 if (conv == gaim_conv_window_get_active_conversation(win)) |
| 4736 | 4985 update_typing_icon(conv); |
|
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4986 |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4987 if (type == GAIM_CONV_UPDATE_TITLE) { |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4988 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4989 if (conv == gaim_conv_window_get_active_conversation(win)) |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4990 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); |
|
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
4991 } |
| 4359 | 4992 } |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4993 else if (type == GAIM_CONV_UPDATE_TOPIC) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
4994 { |
| 7154 | 4995 const char *topic; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4996 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4997 gtkchat = gtkconv->u.chat; |
| 4998 | |
| 7154 | 4999 topic = gaim_conv_chat_get_topic(chat); |
| 5000 | |
| 5001 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),topic); | |
| 5002 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text, | |
|
8155
77d1252b3803
[gaim-migrate @ 8867]
Christian Hammond <chipx86@chipx86.com>
parents:
8143
diff
changeset
|
5003 topic, NULL); |
| 4359 | 5004 } |
| 5005 else if (type == GAIM_CONV_ACCOUNT_ONLINE || | |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5006 type == GAIM_CONV_ACCOUNT_OFFLINE) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5007 { |
| 7929 | 5008 gray_stuff_out(gaim_conv_window_get_active_conversation(win)); |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
5009 generate_send_as_items(win, NULL); |
| 6440 | 5010 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
| 5011 update_tab_icon(conv); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5012 } |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5013 else if (type == GAIM_CONV_UPDATE_AWAY) |
|
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5014 { |
| 6440 | 5015 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
| 5016 update_tab_icon(conv); | |
| 4359 | 5017 } |
|
8256
1d86096ae0f4
[gaim-migrate @ 8979]
Christian Hammond <chipx86@chipx86.com>
parents:
8253
diff
changeset
|
5018 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
|
5019 type == GAIM_CONV_UPDATE_CHATLEFT) |
|
8001
934f5df83b29
[gaim-migrate @ 8678]
Christian Hammond <chipx86@chipx86.com>
parents:
7996
diff
changeset
|
5020 { |
| 7929 | 5021 gray_stuff_out(conv); |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
5022 } |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5023 else if (type == GAIM_CONV_UPDATE_ICON) |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5024 { |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5025 gaim_gtkconv_update_buddy_icon(conv); |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5026 } |
| 4359 | 5027 } |
| 5028 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5029 static GaimConversationUiOps conversation_ui_ops = |
| 4359 | 5030 { |
| 5031 gaim_gtkconv_destroy, /* destroy_conversation */ | |
| 5032 gaim_gtkconv_write_chat, /* write_chat */ | |
| 5033 gaim_gtkconv_write_im, /* write_im */ | |
| 5034 gaim_gtkconv_write_conv, /* write_conv */ | |
| 5035 gaim_gtkconv_chat_add_user, /* chat_add_user */ | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5036 gaim_gtkconv_chat_add_users, /* chat_add_users */ |
| 4359 | 5037 gaim_gtkconv_chat_rename_user, /* chat_rename_user */ |
| 5038 gaim_gtkconv_chat_remove_user, /* chat_remove_user */ | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5039 gaim_gtkconv_chat_remove_users, /* chat_remove_users */ |
| 4359 | 5040 NULL, /* update_progress */ |
| 5041 gaim_gtkconv_updated /* updated */ | |
| 5042 }; | |
| 5043 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5044 GaimConversationUiOps * |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5045 gaim_gtk_conversations_get_conv_ui_ops(void) |
| 4359 | 5046 { |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
5047 return &conversation_ui_ops; |
| 4359 | 5048 } |
| 5049 | |
| 5050 /************************************************************************** | |
| 5051 * Public conversation utility functions | |
| 5052 **************************************************************************/ | |
| 5053 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5054 gaim_gtkconv_update_buddy_icon(GaimConversation *conv) |
| 4359 | 5055 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5056 GaimGtkConversation *gtkconv; |
| 7143 | 5057 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); |
| 4359 | 5058 |
| 5059 char filename[256]; | |
| 5060 FILE *file; | |
| 5061 GError *err = NULL; | |
| 5062 | |
| 6695 | 5063 GaimBuddy *buddy; |
| 4757 | 5064 |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5065 const void *data; |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5066 size_t len; |
| 4359 | 5067 |
| 5068 GdkPixbuf *buf; | |
| 5069 | |
| 5070 GtkWidget *event; | |
| 5071 GtkWidget *frame; | |
| 5072 GdkPixbuf *scale; | |
| 5073 GdkPixmap *pm; | |
| 5074 GdkBitmap *bm; | |
| 5075 int sf = 0; | |
| 5076 | |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5077 g_return_if_fail(conv != NULL); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5078 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5079 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM); |
| 4359 | 5080 |
| 5081 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5082 | |
| 5083 remove_icon(gtkconv); | |
| 5084 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5085 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
| 4359 | 5086 return; |
| 5087 | |
| 5088 if (gaim_conversation_get_gc(conv) == NULL) | |
| 5089 return; | |
| 5090 | |
| 8189 | 5091 if (gtkconv->u.im->anim) |
| 4793 | 5092 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 8189 | 5093 else |
| 5094 gtkconv->u.im->animate = gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons"); | |
| 4793 | 5095 |
| 4757 | 5096 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv), |
| 5097 gaim_conversation_get_name(conv))) != NULL) { | |
| 8374 | 5098 const char *iconfile; |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
5099 if((iconfile = gaim_blist_node_get_string((GaimBlistNode*)buddy, |
|
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
5100 "buddy_icon"))) { |
| 8374 | 5101 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); |
| 5102 struct stat st; | |
| 5103 if ((icon == NULL) && (!stat(iconfile, &st))) { | |
| 5104 FILE *file = fopen(iconfile, "rb"); | |
| 5105 if (file) { | |
| 5106 char *data = g_malloc(st.st_size); | |
| 5107 fread(data, 1, st.st_size, file); | |
| 5108 fclose(file); | |
| 5109 gaim_buddy_icons_set_for_user(gaim_conversation_get_account(conv), gaim_conversation_get_name(conv), data, st.st_size); | |
| 5110 g_free(data); | |
| 5111 } | |
| 5112 return; | |
| 5113 } | |
| 5114 else | |
|
8407
15614a7cdc13
[gaim-migrate @ 9137]
Christian Hammond <chipx86@chipx86.com>
parents:
8380
diff
changeset
|
5115 gtkconv->u.im->anim = |
| 8496 | 5116 gdk_pixbuf_animation_new_from_file(iconfile, &err); /* LEAK */ |
| 8374 | 5117 } |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5118 } |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5119 else |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5120 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5121 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
|
5122 |
|
6877
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5123 if (icon == NULL) |
|
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5124 return; |
|
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5125 |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5126 data = gaim_buddy_icon_get_data(icon, &len); |
| 4757 | 5127 |
| 5128 /* this is such an evil hack, i don't know why i'm even considering it. | |
| 5129 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */ | |
| 5130 g_snprintf(filename, sizeof(filename), | |
| 5131 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d", | |
| 5132 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid()); | |
| 5133 | |
| 5134 if (!(file = fopen(filename, "wb"))) | |
| 5135 return; | |
| 5136 | |
| 5137 fwrite(data, 1, len, file); | |
| 5138 fclose(file); | |
| 5139 | |
| 5140 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err); | |
| 5141 /* make sure we remove the file as soon as possible */ | |
| 5142 unlink(filename); | |
| 5143 } | |
| 4359 | 5144 |
| 5145 if (err) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5146 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5147 "Buddy icon error: %s\n", err->message); |
| 4359 | 5148 g_error_free(err); |
| 5149 } | |
| 5150 | |
| 5151 if (!gtkconv->u.im->anim) | |
| 5152 return; | |
| 5153 | |
| 4793 | 5154 if(gtkconv->u.im->iter) |
| 5155 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 5156 | |
| 4359 | 5157 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) { |
| 5158 gtkconv->u.im->iter = NULL; | |
| 5159 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
| 5160 } else { | |
| 5161 gtkconv->u.im->iter = | |
| 8496 | 5162 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); /* LEAK */ |
| 4359 | 5163 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); |
| 8189 | 5164 if (gtkconv->u.im->animate) |
| 5165 start_anim(NULL, conv); | |
| 4359 | 5166 } |
| 5167 | |
| 5168 sf = SCALE(gtkconv->u.im->anim); | |
| 5169 scale = gdk_pixbuf_scale_simple(buf, | |
| 5170 MAX(gdk_pixbuf_get_width(buf) * sf / | |
| 5171 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
| 5172 MAX(gdk_pixbuf_get_height(buf) * sf / | |
| 5173 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
| 5174 GDK_INTERP_NEAREST); | |
| 5175 | |
| 5176 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 4793 | 5177 g_object_unref(G_OBJECT(scale)); |
| 4359 | 5178 |
| 5179 frame = gtk_frame_new(NULL); | |
| 5180 gtk_frame_set_shadow_type(GTK_FRAME(frame), | |
| 5181 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN)); | |
|
8253
0c5977fd3101
[gaim-migrate @ 8976]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
5182 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 0); |
| 4359 | 5183 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0); |
| 5184 gtk_widget_show(frame); | |
| 5185 | |
| 5186 event = gtk_event_box_new(); | |
| 5187 gtk_container_add(GTK_CONTAINER(frame), event); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5188 g_signal_connect(G_OBJECT(event), "button-press-event", |
| 4359 | 5189 G_CALLBACK(icon_menu), conv); |
| 5190 gtk_widget_show(event); | |
| 5191 | |
| 4635 | 5192 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm); |
| 4359 | 5193 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf); |
| 5194 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon); | |
| 5195 gtk_widget_show(gtkconv->u.im->icon); | |
| 5196 | |
| 4793 | 5197 g_object_unref(G_OBJECT(pm)); |
| 4359 | 5198 |
| 5199 if (bm) | |
| 4793 | 5200 g_object_unref(G_OBJECT(bm)); |
| 7143 | 5201 |
| 5202 /* The buddy icon code needs badly to be fixed. */ | |
| 5203 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
| 8068 | 5204 if(conv == gaim_conv_window_get_active_conversation(gaim_conversation_get_window(conv))) |
| 5205 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf); | |
| 4359 | 5206 } |
| 5207 | |
| 5208 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5209 gaim_gtkconv_update_font_colors(GaimConversation *conv) |
| 4421 | 5210 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5211 GaimGtkConversation *gtkconv; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5212 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5213 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5214 return; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5215 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5216 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5217 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5218 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5219 >kconv->fg_color); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5220 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5221 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5222 >kconv->bg_color); |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5223 } |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5224 |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5225 void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5226 gaim_gtkconv_update_font_face(GaimConversation *conv) |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5227 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5228 GaimGtkConversation *gtkconv; |
| 6141 | 5229 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5230 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5231 return; |
| 6141 | 5232 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5233 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
5234 |
| 6141 | 5235 strncpy(gtkconv->fontface, |
| 5236 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"), | |
| 5237 sizeof(gtkconv->fontface)); | |
| 4421 | 5238 } |
| 5239 | |
| 5240 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5241 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv) |
| 4359 | 5242 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5243 GaimConvWindow *win; |
| 4359 | 5244 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5245 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5246 return; |
| 5247 | |
| 7887 | 5248 win = gaim_conversation_get_window(conv); |
| 5249 | |
| 5250 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv) | |
| 5251 gray_stuff_out(conv); | |
| 4359 | 5252 } |
| 5253 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5254 GaimConvWindow * |
| 4359 | 5255 gaim_gtkwin_get_at_xy(int x, int y) |
| 5256 { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5257 GaimConvWindow *win = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5258 GaimGtkWindow *gtkwin; |
| 4359 | 5259 GdkWindow *gdkwin; |
| 5260 GList *l; | |
| 5261 | |
| 5262 gdkwin = gdk_window_at_pointer(&x, &y); | |
| 5263 | |
| 5264 if (gdkwin) | |
| 5265 gdkwin = gdk_window_get_toplevel(gdkwin); | |
| 5266 | |
| 5267 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5268 win = (GaimConvWindow *)l->data; |
| 4359 | 5269 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5270 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5271 continue; |
| 5272 | |
| 5273 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5274 | |
| 5275 if (gdkwin == gtkwin->window->window) | |
| 5276 return win; | |
| 5277 } | |
| 5278 | |
| 5279 return NULL; | |
| 5280 } | |
| 5281 | |
| 5282 int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5283 gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y) |
| 4359 | 5284 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5285 GaimGtkWindow *gtkwin; |
| 4359 | 5286 GList *l; |
| 5287 gint nb_x, nb_y, x_rel, y_rel; | |
| 5288 GtkNotebook *notebook; | |
| 5289 GtkWidget *tab; | |
| 5290 gint i, page_num = 0; | |
| 5291 gboolean first_visible = TRUE; | |
| 5292 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5293 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5294 return -1; |
| 5295 | |
| 5296 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5297 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 5298 | |
| 5299 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 5300 x_rel = x - nb_x; | |
| 5301 y_rel = y - nb_y; | |
| 5302 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5303 for (l = gaim_conv_window_get_conversations(win), i = 0; |
| 4359 | 5304 l != NULL; |
| 5305 l = l->next, i++) { | |
| 5306 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5307 GaimConversation *conv = l->data; |
| 4359 | 5308 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
| 5309 | |
| 5310 if (!GTK_WIDGET_MAPPED(tab)) | |
| 5311 continue; | |
| 5312 | |
| 5313 if (first_visible) { | |
| 5314 first_visible = FALSE; | |
| 5315 | |
| 5316 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x; | |
| 5317 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y; | |
| 5318 } | |
| 5319 | |
| 5320 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
| 5321 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
| 5322 | |
| 5323 if (tab->allocation.x <= x_rel) { | |
| 5324 if (tab->allocation.x + tab->allocation.width <= x_rel) | |
| 5325 page_num = i + 1; | |
| 5326 else | |
| 5327 page_num = i; | |
| 5328 } | |
| 5329 else | |
| 5330 break; | |
| 5331 } | |
| 5332 else { | |
| 5333 if (tab->allocation.y <= y_rel) { | |
| 5334 if (tab->allocation.y + tab->allocation.height <= y_rel) | |
| 5335 page_num = i + 1; | |
| 5336 else | |
| 5337 page_num = i; | |
| 5338 } | |
| 5339 else | |
| 5340 break; | |
| 5341 } | |
| 5342 } | |
| 5343 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5344 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
| 4359 | 5345 return -1; |
| 5346 | |
| 5347 return page_num; | |
| 5348 } | |
| 5349 | |
| 5350 int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5351 gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y) |
| 4359 | 5352 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5353 GaimGtkWindow *gtkwin; |
| 4359 | 5354 GList *l; |
| 5355 gint nb_x, nb_y, x_rel, y_rel; | |
| 5356 GtkNotebook *notebook; | |
| 5357 GtkWidget *tab; | |
| 5358 gint i, page_num = 0; | |
| 5359 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5360 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5361 return -1; |
| 5362 | |
| 5363 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5364 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 5365 | |
| 5366 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 5367 x_rel = x - nb_x; | |
| 5368 y_rel = y - nb_y; | |
| 5369 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5370 for (l = gaim_conv_window_get_conversations(win), i = 0; |
| 4359 | 5371 l != NULL; |
| 5372 l = l->next, i++) { | |
| 5373 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5374 GaimConversation *conv = l->data; |
| 4359 | 5375 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
| 5376 | |
| 5377 if (!GTK_WIDGET_MAPPED(tab)) | |
| 5378 continue; | |
| 5379 | |
| 5380 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
| 5381 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
| 5382 | |
| 5383 if (tab->allocation.x <= x_rel) { | |
| 5384 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel) | |
| 5385 page_num = i + 1; | |
| 5386 else | |
| 5387 page_num = i; | |
| 5388 } | |
| 5389 else | |
| 5390 break; | |
| 5391 } | |
| 5392 else { | |
| 5393 if (tab->allocation.y <= y_rel) { | |
| 5394 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel) | |
| 5395 page_num = i + 1; | |
| 5396 else | |
| 5397 page_num = i; | |
| 5398 } | |
| 5399 else | |
| 5400 break; | |
| 5401 } | |
| 5402 } | |
| 5403 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5404 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
| 4359 | 5405 return -1; |
| 5406 | |
| 5407 return page_num; | |
| 5408 } | |
|
4940
3708545afe42
[gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents:
4939
diff
changeset
|
5409 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5410 static void |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5411 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5412 gpointer data) |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5413 { |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5414 if (value) |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5415 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5416 GDK_Escape, 0, TRUE); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5417 else |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5418 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5419 GDK_W, GDK_CONTROL_MASK, TRUE); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5420 } |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5421 |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5422 static void |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5423 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
|
5424 gpointer data) |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5425 { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5426 GList *l; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5427 GaimConversation *conv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5428 GaimGtkConversation *gtkconv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5429 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5430 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5431 conv = (GaimConversation *)l->data; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5432 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5433 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5434 continue; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5435 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5436 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5437 |
| 6440 | 5438 if (value) { |
| 5439 update_tab_icon(conv); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5440 gtk_widget_show(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5441 gtk_widget_show(gtkconv->menu_icon); |
| 6440 | 5442 } |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5443 else { |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5444 gtk_widget_hide(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5445 gtk_widget_hide(gtkconv->menu_icon); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5446 } |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5447 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5448 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5449 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5450 static void |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5451 close_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5452 gpointer data) |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5453 { |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5454 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5455 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5456 GaimGtkConversation *gtkconv; |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5457 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5458 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5459 conv = (GaimConversation *)l->data; |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5460 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5461 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5462 continue; |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5463 |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5464 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5465 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5466 if (value) |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5467 gtk_widget_show(gtkconv->close); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5468 else |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5469 gtk_widget_hide(gtkconv->close); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5470 } |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5471 } |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5472 |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5473 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5474 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5475 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5476 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5477 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5478 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5479 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5480 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5481 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5482 conv = (GaimConversation *)l->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5483 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5484 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5485 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5486 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5487 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5488 |
| 7386 | 5489 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
|
5490 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5491 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5492 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5493 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5494 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5495 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5496 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5497 #ifdef USE_GTKSPELL |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5498 GList *cl; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5499 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5500 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5501 GtkSpell *spell; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5502 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5503 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5504 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5505 conv = (GaimConversation *)cl->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5506 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5507 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5508 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5509 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5510 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5511 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5512 if (value) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
5513 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5514 else { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5515 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry)); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5516 gtkspell_detach(spell); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5517 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5518 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5519 #endif |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5520 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5521 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5522 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5523 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5524 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5525 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5526 GList *cl; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5527 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5528 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5529 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5530 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5531 conv = (GaimConversation *)cl->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5532 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5533 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5534 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5535 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5536 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5537 |
| 7386 | 5538 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value)); |
| 8515 | 5539 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->entry), (gboolean)GPOINTER_TO_INT(value)); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5540 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5541 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5542 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5543 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5544 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5545 gpointer data) |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5546 { |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5547 GList *l; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5548 GtkPositionType pos; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5549 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5550 GaimGtkWindow *gtkwin; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5551 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5552 pos = GPOINTER_TO_INT(value); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5553 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5554 for (l = gaim_get_windows(); l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5555 win = (GaimConvWindow *)l->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5556 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5557 if (!GAIM_IS_GTK_WINDOW(win)) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5558 continue; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5559 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5560 gtkwin = GAIM_GTK_WINDOW(win); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5561 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5562 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5563 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5564 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5565 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5566 static void |
| 8456 | 5567 html_shortcuts_pref_cb(const char *name, GaimPrefType type, |
| 5568 gpointer value, gpointer data) | |
| 5569 { | |
| 5570 GList *l; | |
| 5571 GaimConversation *conv; | |
| 5572 GaimGtkConversation *gtkconv; | |
| 5573 | |
| 5574 for(l = gaim_get_conversations(); l != NULL; l = l->next) { | |
| 5575 conv = (GaimConversation *)l->data; | |
| 5576 | |
| 5577 if(!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 5578 continue; | |
| 5579 | |
| 5580 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5581 | |
| 5582 gtk_imhtml_html_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 5583 (gboolean)GPOINTER_TO_INT(value)); | |
| 5584 } | |
| 5585 } | |
| 5586 | |
| 5587 static void | |
| 5588 smiley_shortcuts_pref_cb(const char *name, GaimPrefType type, | |
| 5589 gpointer value, gpointer data) | |
| 5590 { | |
| 5591 GList *l; | |
| 5592 GaimConversation *conv; | |
| 5593 GaimGtkConversation *gtkconv; | |
| 5594 | |
| 5595 for(l = gaim_get_conversations(); l != NULL; l = l->next) { | |
| 5596 conv = (GaimConversation *)l->data; | |
| 5597 | |
| 5598 if(!GAIM_IS_GTK_CONVERSATION(conv)) | |
| 5599 continue; | |
| 5600 | |
| 5601 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5602 | |
| 5603 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(gtkconv->entry), | |
| 5604 (gboolean)GPOINTER_TO_INT(value)); | |
| 5605 } | |
| 5606 } | |
| 5607 | |
| 5608 static void | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5609 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type, |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5610 gpointer value, gpointer data) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5611 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5612 GList *l; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5613 GaimConversation *conv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5614 GaimGtkConversation *gtkconv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5615 GaimConvWindow *win; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5616 GaimGtkWindow *gtkwin; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5617 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5618 for (l = gaim_get_conversations(); l != NULL; l = l->next) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5619 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5620 conv = (GaimConversation *)l->data; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5621 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5622 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5623 continue; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5624 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5625 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5626 win = gaim_conversation_get_window(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5627 gtkwin = GAIM_GTK_WINDOW(win); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5628 |
| 7386 | 5629 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5630 gtk_check_menu_item_set_active( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5631 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5632 gtkconv->show_formatting_toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5633 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5634 if (gtkconv->show_formatting_toolbar) |
| 8317 | 5635 gtk_widget_show(gtkconv->toolbar); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5636 else |
| 8317 | 5637 gtk_widget_hide(gtkconv->toolbar); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5638 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5639 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5640 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5641 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5642 im_button_type_pref_cb(const char *name, GaimPrefType type, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5643 gpointer value, gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5644 { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5645 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5646 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5647 GaimGtkConversation *gtkconv; |
|
5675
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_ims(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5650 conv = (GaimConversation *)l->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5651 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5652 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5653 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5654 } |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5655 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5656 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5657 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5658 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5659 gpointer value, gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5660 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5661 GList *l; |
| 8189 | 5662 GaimConversation *conv; |
| 5663 GaimGtkConversation *gtkconv; | |
| 5664 GaimConvWindow *win; | |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5665 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5666 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
|
5667 return; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5668 |
| 8189 | 5669 /* Set the "animate" flag for each icon based on the new preference */ |
| 5670 for (l = gaim_get_ims(); l != NULL; l = l->next) { | |
| 5671 conv = (GaimConversation *)l->data; | |
| 5672 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5673 gtkconv->u.im->animate = (gboolean)value; | |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5674 } |
| 8189 | 5675 |
| 5676 /* Now either stop or start animation for the active conversation in each window */ | |
| 5677 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
| 5678 win = (GaimConvWindow *)l->data; | |
| 5679 conv = gaim_conv_window_get_active_conversation(win); | |
| 5680 gaim_gtkconv_update_buddy_icon(conv); | |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5681 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5682 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5683 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5684 static void |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5685 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
|
5686 gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5687 { |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5688 GList *l; |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5689 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5690 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5691 GaimConversation *conv = l->data; |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5692 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5693 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5694 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon); |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5695 } |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5696 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5697 |
|
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5680
diff
changeset
|
5698 static void |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5699 chat_button_type_pref_cb(const char *name, GaimPrefType type, |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5700 gpointer value, gpointer data) |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5701 { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5702 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5703 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5704 GaimGtkConversation *gtkconv; |
|
7996
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5705 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5706 for (l = gaim_get_chats(); l != NULL; l = l->next) { |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5707 conv = (GaimConversation *)l->data; |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5708 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5709 |
|
334ab1319406
[gaim-migrate @ 8673]
Christian Hammond <chipx86@chipx86.com>
parents:
7995
diff
changeset
|
5710 setup_chat_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5711 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5712 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5713 |
|
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5714 static void |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5715 conv_placement_pref_cb(const char *name, GaimPrefType type, |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5716 gpointer value, gpointer data) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5717 { |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5718 GaimConvPlacementFunc func; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5719 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5720 if (strcmp(name, "/gaim/gtk/conversations/placement")) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5721 return; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5722 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5723 func = gaim_conv_placement_get_fnc(value); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5724 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5725 if (func == NULL) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5726 return; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5727 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5728 gaim_conv_placement_set_current_func(func); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5729 } |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5730 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5731 void |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5732 gaim_gtk_conversations_init(void) |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5733 { |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5734 /* Conversations */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5735 gaim_prefs_add_none("/gaim/gtk/conversations"); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5736 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
|
5737 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5738 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5739 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5740 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5741 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5742 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5743 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5744 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5745 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5746 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5747 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5748 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5749 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5750 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5751 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5752 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5753 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5754 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5755 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5756 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE); |
|
5743
af159a5bbaa0
[gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
5757 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5758 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
|
5759 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last"); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5760 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5761 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5762 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5763 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5764 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5765 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
|
5766 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5767 /* Conversations -> Chat */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5768 gaim_prefs_add_none("/gaim/gtk/conversations/chat"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5769 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5770 GAIM_BUTTON_TEXT_IMAGE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5771 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5772 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/old_tab_complete", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5773 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
|
5774 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5775 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5776 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5777 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5778 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5779 /* Conversations -> IM */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5780 gaim_prefs_add_none("/gaim/gtk/conversations/im"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5781 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5782 GAIM_BUTTON_TEXT_IMAGE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5783 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
|
5784 gaim_prefs_add_bool("/gaim/gtk/conversations/im/hide_on_send", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5785 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
|
5786 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
|
5787 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5788 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5789 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5790 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5791 /* Connect callbacks. */ |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5792 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes", |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5793 escape_closes_pref_cb, NULL); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5794 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs", |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5795 icons_on_tabs_pref_cb, NULL); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5796 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5797 close_on_tabs_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5798 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5799 show_smileys_pref_cb, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5800 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5801 show_timestamps_pref_cb, NULL); |
| 8456 | 5802 gaim_prefs_connect_callback("/gaim/gtk/conversations/html_shortcuts", |
| 5803 html_shortcuts_pref_cb, NULL); | |
| 5804 gaim_prefs_connect_callback("/gaim/gtk/conversations/smiley_shortcuts", | |
| 5805 smiley_shortcuts_pref_cb, NULL); | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5806 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar", |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5807 show_formatting_toolbar_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5808 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5809 spellcheck_pref_cb, NULL); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5810 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5811 tab_side_pref_cb, NULL); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5812 |
|
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5813 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement", |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5814 conv_placement_pref_cb, NULL); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5815 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement"); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5816 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
5817 |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5818 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5819 /* IM callbacks */ |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5820 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5821 im_button_type_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5822 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5823 animate_buddy_icons_pref_cb, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5824 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5825 show_buddy_icons_pref_cb, NULL); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5826 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5827 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5828 /* Chat callbacks */ |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5829 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5830 chat_button_type_pref_cb, NULL); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5831 } |
