Mercurial > pidgin
annotate src/gtkconv.c @ 7104:7700a28929bd
[gaim-migrate @ 7669]
When retrieving user info for an MSN user, the prpl checks if the info is
empty. If so, it displays an error dialog indicating so. Otherwise, it
displays the info.
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Wed, 01 Oct 2003 05:42:40 +0000 |
| parents | c8bf2da398e3 |
| children | 9220c7490cd1 |
| 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 * |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
5 * Copyright (C) 2002-2003 Christian Hammond <chipx86@gnupdate.org> |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
6 * |
| 4359 | 7 * This program is free software; you can redistribute it and/or modify |
| 8 * it under the terms of the GNU General Public License as published by | |
| 9 * the Free Software Foundation; either version 2 of the License, or | |
| 10 * (at your option) any later version. | |
| 11 * | |
| 12 * This program is distributed in the hope that it will be useful, | |
| 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 * GNU General Public License for more details. | |
| 16 * | |
| 17 * You should have received a copy of the GNU General Public License | |
| 18 * along with this program; if not, write to the Free Software | |
| 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 20 * | |
| 21 */ | |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
22 #include "gtkinternal.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
23 |
| 4359 | 24 #ifndef _WIN32 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
25 # include <X11/Xlib.h> |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
26 #endif |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
27 |
| 4359 | 28 #ifdef USE_GTKSPELL |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
29 # include <gtkspell/gtkspell.h> |
| 4359 | 30 #endif |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
31 |
| 4359 | 32 #include <gdk/gdkkeysyms.h> |
| 6982 | 33 #include <locale.h> |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
34 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
35 #include "debug.h" |
| 6982 | 36 #include "imgstore.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
37 #include "log.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
38 #include "multi.h" |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
39 #include "notify.h" |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
40 #include "prefs.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
41 #include "prpl.h" |
| 6038 | 42 #include "request.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
43 #include "sound.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
44 #include "util.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
45 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
46 #include "dnd-hints.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
47 #include "gtkblist.h" |
| 5717 | 48 #include "gtkconv.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
49 #include "gtkimhtml.h" |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
50 #include "gtkpounce.h" |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
51 #include "gtkprivacy.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
52 #include "gtkutils.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
53 #include "stock.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
54 |
| 5717 | 55 #include "ui.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
56 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
57 /* XXX */ |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
58 #include "gaim.h" |
| 4359 | 59 |
|
4373
dcc6c130c6d9
[gaim-migrate @ 4639]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4370
diff
changeset
|
60 #ifdef _WIN32 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
61 # include "wspell.h" |
|
4373
dcc6c130c6d9
[gaim-migrate @ 4639]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4370
diff
changeset
|
62 #endif |
|
dcc6c130c6d9
[gaim-migrate @ 4639]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4370
diff
changeset
|
63 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
64 #define AUTO_RESPONSE "<AUTO-REPLY> : " |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
65 |
| 4359 | 66 static char nick_colors[][8] = { |
| 67 "#ba55d3", /* Medium Orchid */ | |
| 68 "#ee82ee", /* Violet */ | |
| 69 "#c715b4", /* Medium Violet Red */ | |
| 70 "#ff69b4", /* Hot Pink */ | |
| 71 "#ff6347", /* Tomato */ | |
| 72 "#fa8c00", /* Dark Orange */ | |
| 73 "#fa8072", /* Salmon */ | |
| 74 "#b22222", /* Fire Brick */ | |
| 75 "#f4a460", /* Sandy Brown */ | |
| 76 "#cd5c5c", /* Indian Red */ | |
| 77 "#bc8f8f", /* Rosy Brown */ | |
| 78 "#f0e68c", /* Khaki */ | |
| 79 "#bdb76b", /* Dark Khaki */ | |
| 80 "#228b22", /* Forest Green */ | |
| 81 "#9acd32", /* Yellow Green */ | |
| 82 "#32cd32", /* Lime Green */ | |
| 83 "#3cb371", /* Medium Sea Green */ | |
| 84 "#2e8b57", /* Sea Green */ | |
| 85 "#8fbc8f", /* Dark Sea Green */ | |
| 86 "#66cdaa", /* Medium Aquamarine */ | |
| 87 "#5f9ea0", /* Cadet Blue */ | |
| 88 "#48d1cc", /* Medium Turquoise */ | |
| 89 "#00ced1", /* Dark Turquoise */ | |
| 90 "#4682b4", /* Stell Blue */ | |
| 91 "#00bfff", /* Deep Sky Blue */ | |
| 92 "#1690ff", /* Dodger Blue */ | |
| 93 "#4169ff", /* Royal Blue */ | |
| 94 "#6a5acd", /* Slate Blue */ | |
| 95 "#6495ed", /* Cornflower Blue */ | |
| 96 "#708090", /* Slate gray */ | |
| 6291 | 97 "#2f4f4f", /* Dark Slate Gray */ |
| 98 "#ff8c00", /* Dark Orange */ | |
| 4359 | 99 }; |
| 6291 | 100 |
| 4359 | 101 #define NUM_NICK_COLORS (sizeof(nick_colors) / sizeof(*nick_colors)) |
| 102 | |
| 103 #define SCALE(x) \ | |
| 104 ((gdk_pixbuf_animation_get_width(x) <= 48 && \ | |
| 105 gdk_pixbuf_animation_get_height(x) <= 48) ? 48 : 50) | |
| 106 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
107 typedef struct |
| 4359 | 108 { |
| 109 GtkWidget *window; | |
| 110 | |
| 111 GtkWidget *entry; | |
| 112 GtkWidget *message; | |
| 113 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
114 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
115 |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
116 } InviteBuddyInfo; |
| 4359 | 117 |
| 118 static GtkWidget *invite_dialog = NULL; | |
| 119 | |
| 120 /* Prototypes. <-- because Paco-Paco hates this comment. */ | |
| 121 static void check_everything(GtkTextBuffer *buffer); | |
| 4685 | 122 static void set_toggle(GtkWidget *tb, gboolean active); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
123 static void move_next_tab(GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
124 static void do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
125 static void do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
126 static void do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
127 static void do_small(GtkWidget *small, GaimGtkConversation *gtkconv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
128 static void do_normal(GtkWidget *small, GaimGtkConversation *gtkconv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
129 static void do_big(GtkWidget *small, GaimGtkConversation *gtkconv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
130 static void toggle_font(GtkWidget *font, GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
131 static void toggle_fg_color(GtkWidget *color, GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
132 static void toggle_bg_color(GtkWidget *color, GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
133 static void got_typing_keypress(GaimConversation *conv, gboolean first); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
134 static GList *generate_invite_user_names(GaimConnection *gc); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
135 static void add_chat_buddy_common(GaimConversation *conv, |
| 4359 | 136 const char *name, int pos); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
137 static void tab_complete(GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
138 static void update_typing_icon(GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
139 static gboolean update_send_as_selection(GaimWindow *win); |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
140 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
|
141 static void save_convo(GtkWidget *save, GaimConversation *c); |
| 6440 | 142 static void update_tab_icon(GaimConversation *conv); |
| 4359 | 143 |
| 144 /************************************************************************** | |
| 145 * Callbacks | |
| 146 **************************************************************************/ | |
| 147 static void | |
| 6038 | 148 do_save_convo(GtkWidget *wid) |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
149 { |
| 6039 | 150 GaimConversation *c = g_object_get_data(G_OBJECT(GTK_FILE_SELECTION(wid)->ok_button), |
| 6038 | 151 "gaim_conversation"); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
152 const char *filename; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
153 FILE *fp; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
154 |
|
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 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
157 if (!((gaim_conversation_get_type(c) != GAIM_CONV_CHAT && |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
158 g_list_find(gaim_get_ims(), c)) || |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
159 (gaim_conversation_get_type(c) == GAIM_CONV_CHAT && |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
160 g_list_find(gaim_get_chats(), c)))) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
161 filename = NULL; |
|
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 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
171 fprintf(fp, "%s", c->history->str); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
172 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
173 fclose(fp); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
174 } |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
175 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
176 static void |
| 6038 | 177 do_check_save_convo(GObject *obj, GtkWidget *wid) |
| 178 { | |
| 179 const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); | |
| 180 | |
| 181 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid))) | |
| 182 return; | |
| 183 | |
| 184 if(g_file_test(filename, G_FILE_TEST_EXISTS)){ | |
| 185 gaim_request_yes_no(NULL, NULL, _("That file already exists"), | |
| 186 _("Would you like to overwrite it?"), 1, wid, | |
| 187 G_CALLBACK(do_save_convo), NULL); | |
| 188 } | |
| 189 else | |
| 190 do_save_convo(wid); | |
| 191 } | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
192 |
| 6038 | 193 static void |
| 4359 | 194 do_insert_image_cb(GObject *obj, GtkWidget *wid) |
| 195 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
196 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
197 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
198 GaimIm *im; |
| 6982 | 199 char *name, *filename; |
| 200 char *buf, *data; | |
| 201 size_t size; | |
| 202 GError *error; | |
| 4359 | 203 int id; |
| 204 | |
| 5106 | 205 conv = g_object_get_data(G_OBJECT(wid), "user_data"); |
| 4359 | 206 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 207 im = GAIM_IM(conv); | |
| 6982 | 208 name = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid))); |
| 209 | |
| 210 if (!name) { | |
| 211 gtk_widget_destroy(gtkconv->dialogs.image); | |
| 212 gtkconv->dialogs.image = NULL; | |
| 213 return; | |
| 214 } | |
| 215 | |
| 216 if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(wid))) { | |
| 217 g_free(name); | |
| 4359 | 218 return; |
| 6982 | 219 } |
| 220 | |
| 221 gtk_widget_destroy(gtkconv->dialogs.image); | |
| 222 gtkconv->dialogs.image = NULL; | |
| 223 | |
| 224 if (!g_file_get_contents(name, &data, &size, &error)) { | |
| 225 gaim_notify_error(NULL, NULL, error->message, NULL); | |
| 226 | |
| 227 g_error_free(error); | |
| 228 g_free(name); | |
| 229 | |
| 4359 | 230 return; |
| 231 } | |
| 232 | |
| 233 filename = name; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
234 while (strchr(filename, '/')) |
| 4359 | 235 filename = strchr(filename, '/') + 1; |
| 236 | |
| 6982 | 237 id = gaim_imgstore_add(data, size, filename); |
| 238 g_free(data); | |
| 239 | |
| 240 if (!id) { | |
| 241 buf = g_strdup_printf(_("Failed to store image: %s\n"), name); | |
| 242 gaim_notify_error(NULL, NULL, buf, NULL); | |
| 243 | |
| 244 g_free(buf); | |
| 245 g_free(name); | |
| 246 | |
| 247 return; | |
| 248 } | |
| 249 | |
| 250 im->images = g_slist_append(im->images, GINT_TO_POINTER(id)); | |
| 251 | |
| 252 buf = g_strdup_printf("<IMG ID=\"%d\" SRC=\"file://%s\">", id, filename); | |
| 253 gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(gtkconv->entry_buffer), buf, -1); | |
| 4359 | 254 g_free(buf); |
| 5046 | 255 |
| 6982 | 256 g_free(name); |
| 257 | |
| 5046 | 258 set_toggle(gtkconv->toolbar.image, FALSE); |
| 4359 | 259 } |
| 260 | |
| 261 static gint | |
| 262 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d) | |
| 263 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
264 GaimWindow *win = (GaimWindow *)d; |
| 4359 | 265 |
| 266 gaim_window_destroy(win); | |
|
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
267 |
|
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
268 return TRUE; |
| 4359 | 269 } |
| 270 | |
| 271 static gint | |
| 272 close_conv_cb(GtkWidget *w, gpointer d) | |
| 273 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
274 GaimConversation *conv = (GaimConversation *)d; |
| 4359 | 275 |
| 276 gaim_conversation_destroy(conv); | |
|
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
277 |
|
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
278 return TRUE; |
| 4359 | 279 } |
| 280 | |
| 281 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
282 cancel_insert_image_cb(GtkWidget *unused, GaimGtkConversation *gtkconv) |
| 5106 | 283 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
284 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
285 FALSE); |
| 5106 | 286 |
| 287 if (gtkconv->dialogs.image) | |
| 288 gtk_widget_destroy(gtkconv->dialogs.image); | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
289 |
| 5106 | 290 gtkconv->dialogs.image = NULL; |
| 291 } | |
| 292 | |
| 293 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
294 insert_image_cb(GtkWidget *save, GaimConversation *conv) |
| 4359 | 295 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
296 GaimGtkConversation *gtkconv; |
| 4359 | 297 char buf[BUF_LONG]; |
| 298 GtkWidget *window; | |
| 299 | |
| 300 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 301 | |
| 5046 | 302 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))) { |
| 303 window = gtk_file_selection_new(_("Gaim - Insert Image")); | |
| 304 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); | |
| 305 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); | |
| 306 | |
| 5106 | 307 g_object_set_data(G_OBJECT(window), "user_data", conv); |
| 5046 | 308 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
| 309 "clicked", G_CALLBACK(do_insert_image_cb), window); | |
| 5106 | 310 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), |
| 311 "clicked", G_CALLBACK(cancel_insert_image_cb), gtkconv); | |
| 5046 | 312 |
| 313 gtk_widget_show(window); | |
| 5106 | 314 gtkconv->dialogs.image = window; |
| 5046 | 315 } else { |
| 316 gtk_widget_grab_focus(gtkconv->entry); | |
| 5106 | 317 if(gtkconv->dialogs.image) |
| 318 gtk_widget_destroy(gtkconv->dialogs.image); | |
| 319 gtkconv->dialogs.image = NULL; | |
| 5046 | 320 } |
| 4359 | 321 } |
| 322 | |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
323 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
324 insert_link_cb(GtkWidget *w, GaimConversation *conv) |
| 4359 | 325 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
326 GaimGtkConversation *gtkconv; |
| 4359 | 327 |
| 328 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 329 | |
| 330 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link))) | |
| 331 show_insert_link(gtkconv->toolbar.link, conv); | |
| 332 else if (gtkconv->dialogs.link) | |
| 333 cancel_link(gtkconv->toolbar.link, conv); | |
| 334 else | |
| 335 gaim_gtk_advance_past(gtkconv, "<A HREF>", "</A>"); | |
| 336 | |
| 337 gtk_widget_grab_focus(gtkconv->entry); | |
| 338 } | |
| 339 | |
| 340 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
341 insert_smiley_cb(GtkWidget *smiley, GaimConversation *conv) |
| 4359 | 342 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
343 GaimGtkConversation *gtkconv; |
| 4359 | 344 |
| 345 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 346 | |
| 347 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley))) | |
| 348 show_smiley_dialog(conv, smiley); | |
| 349 else if (gtkconv->dialogs.smiley) | |
| 350 close_smiley_dialog(smiley, conv); | |
| 351 | |
| 352 gtk_widget_grab_focus(gtkconv->entry); | |
| 353 } | |
| 354 | |
| 355 static gboolean | |
| 356 entry_key_pressed_cb_1(GtkTextBuffer *buffer) | |
| 357 { | |
| 358 check_everything(buffer); | |
| 359 | |
| 360 return FALSE; | |
| 361 } | |
| 362 | |
| 363 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
364 send_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 365 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
366 GaimGtkConversation *gtkconv; |
| 4359 | 367 char *buf, *buf2; |
| 368 GtkTextIter start_iter, end_iter; | |
| 369 int limit; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
370 GaimConnection *gc = gaim_conversation_get_gc(conv); |
| 4359 | 371 |
| 372 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 373 | |
| 374 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_iter); | |
| 375 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end_iter); | |
| 376 buf2 = gtk_text_buffer_get_text(gtkconv->entry_buffer, | |
| 377 &start_iter, &end_iter, FALSE); | |
| 378 | |
| 4685 | 379 set_toggle(gtkconv->toolbar.bold, FALSE); |
| 380 set_toggle(gtkconv->toolbar.italic, FALSE); | |
| 381 set_toggle(gtkconv->toolbar.underline, FALSE); | |
| 5049 | 382 set_toggle(gtkconv->toolbar.larger_size, FALSE); |
| 4685 | 383 set_toggle(gtkconv->toolbar.normal_size, FALSE); |
| 5049 | 384 set_toggle(gtkconv->toolbar.smaller_size,FALSE); |
| 4685 | 385 set_toggle(gtkconv->toolbar.font, FALSE); |
| 386 set_toggle(gtkconv->toolbar.fgcolor, FALSE); | |
| 387 set_toggle(gtkconv->toolbar.bgcolor, FALSE); | |
| 388 set_toggle(gtkconv->toolbar.link, FALSE); | |
| 4359 | 389 |
| 390 gtk_widget_grab_focus(gtkconv->entry); | |
| 391 | |
| 392 limit = 32 * 1024; /* This will be done again in gaim_im_send. *shrug* */ | |
| 393 | |
| 394 buf = g_malloc(limit); | |
| 395 strncpy(buf, buf2, limit); | |
| 396 | |
| 397 g_free(buf2); | |
| 398 | |
| 399 if (strlen(buf) == 0) { | |
| 400 g_free(buf); | |
| 401 | |
| 402 return; | |
| 403 } | |
| 404 | |
| 405 buf2 = g_malloc(limit); | |
| 406 | |
| 6622 | 407 if (gc && gc->flags & GAIM_CONNECTION_HTML) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
408 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) { |
| 4359 | 409 g_snprintf(buf2, limit, "<B>%s</B>", buf); |
| 410 strcpy(buf, buf2); | |
| 411 } | |
| 412 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
413 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) { |
| 4359 | 414 g_snprintf(buf2, limit, "<I>%s</I>", buf); |
| 415 strcpy(buf, buf2); | |
| 416 } | |
| 417 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
418 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) { |
| 4359 | 419 g_snprintf(buf2, limit, "<U>%s</U>", buf); |
| 420 strcpy(buf, buf2); | |
| 421 } | |
| 422 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
423 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_strikethrough")) { |
| 4359 | 424 g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf); |
| 425 strcpy(buf, buf2); | |
| 426 } | |
| 427 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
428 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") || |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
429 gtkconv->has_font) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
430 |
| 4359 | 431 g_snprintf(buf2, limit, |
| 432 "<FONT FACE=\"%s\">%s</FONT>", gtkconv->fontface, buf); | |
| 433 strcpy(buf, buf2); | |
| 434 } | |
| 435 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
436 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) { |
| 4359 | 437 g_snprintf(buf2, limit, |
| 6141 | 438 "<FONT SIZE=\"%d\">%s</FONT>", |
| 439 gaim_prefs_get_int("/gaim/gtk/conversations/font_size"), | |
| 440 buf); | |
| 4359 | 441 strcpy(buf, buf2); |
| 442 } | |
| 443 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
444 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) { |
| 4359 | 445 g_snprintf(buf2, limit, |
| 446 "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>", | |
| 447 gtkconv->fg_color.red / 256, | |
| 448 gtkconv->fg_color.green / 256, | |
| 449 gtkconv->fg_color.blue / 256, buf); | |
| 450 strcpy(buf, buf2); | |
| 451 } | |
| 452 | |
| 6629 | 453 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) && gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) { |
| 4359 | 454 g_snprintf(buf2, limit, |
| 455 "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>", | |
| 4421 | 456 gtkconv->bg_color.red / 256, |
| 457 gtkconv->bg_color.green / 256, | |
| 458 gtkconv->bg_color.blue / 256, buf); | |
| 4359 | 459 strcpy(buf, buf2); |
| 460 } | |
| 461 } | |
| 462 | |
| 463 g_free(buf2); | |
| 464 | |
| 465 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
| 466 gaim_im_send(GAIM_IM(conv), buf); | |
| 467 else | |
| 468 gaim_chat_send(GAIM_CHAT(conv), buf); | |
| 469 | |
| 5629 | 470 if (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
|
471 gaim_window_hide(gaim_conversation_get_window(conv)); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
472 |
| 4359 | 473 g_free(buf); |
| 474 | |
| 475 gtk_text_buffer_set_text(gtkconv->entry_buffer, "", -1); | |
| 476 } | |
| 477 | |
| 478 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
479 add_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 480 { |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
481 GaimAccount *account; |
| 6695 | 482 GaimBuddy *b; |
| 4359 | 483 const char *name; |
| 484 | |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
485 account = gaim_conversation_get_account(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
486 name = gaim_conversation_get_name(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
487 b = gaim_find_buddy(account, name); |
| 4359 | 488 |
| 489 if (b != NULL) | |
| 5975 | 490 show_confirm_del(b); |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
491 else if (account != NULL && gaim_account_is_connected(account)) |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
492 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL); |
| 4359 | 493 |
| 494 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 495 } | |
| 496 | |
| 497 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
498 info_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 499 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
500 GaimGtkConversation *gtkconv; |
| 4359 | 501 |
| 502 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 503 | |
| 504 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
505 GaimGtkChatPane *gtkchat; |
| 4359 | 506 GtkTreeIter iter; |
| 507 GtkTreeModel *model; | |
| 508 GtkTreeSelection *sel; | |
| 509 const char *name; | |
| 510 | |
| 511 gtkchat = gtkconv->u.chat; | |
| 512 | |
| 513 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
| 514 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
| 515 | |
| 516 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
| 517 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1); | |
| 518 else | |
| 519 return; | |
| 520 | |
| 521 serv_get_info(gaim_conversation_get_gc(conv), (char *)name); | |
| 522 } | |
| 523 else { | |
| 524 serv_get_info(gaim_conversation_get_gc(conv), | |
| 525 (char *)gaim_conversation_get_name(conv)); | |
| 526 | |
| 527 gtk_widget_grab_focus(gtkconv->entry); | |
| 528 } | |
| 529 } | |
| 530 | |
| 531 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
532 warn_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 533 { |
| 534 show_warn_dialog(gaim_conversation_get_gc(conv), | |
| 535 (char *)gaim_conversation_get_name(conv)); | |
| 536 | |
| 537 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 538 } | |
| 539 | |
| 540 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
541 block_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 542 { |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
543 GaimAccount *account; |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
544 |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
545 account = gaim_conversation_get_account(conv); |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
546 |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
547 if (account != NULL && gaim_account_is_connected(account)) |
|
6399
d726a36628e8
[gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents:
6398
diff
changeset
|
548 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv)); |
| 4359 | 549 |
| 550 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 551 } | |
| 552 | |
| 553 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
554 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info) |
| 4359 | 555 { |
| 556 const char *buddy, *message; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
557 GaimGtkConversation *gtkconv; |
| 4359 | 558 |
| 559 gtkconv = GAIM_GTK_CONVERSATION(info->conv); | |
| 560 | |
| 561 if (resp == GTK_RESPONSE_OK) { | |
| 562 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry)); | |
| 563 message = gtk_entry_get_text(GTK_ENTRY(info->message)); | |
| 564 | |
| 4793 | 565 if (!g_ascii_strcasecmp(buddy, "")) { |
| 4359 | 566 g_free(info); |
| 567 | |
| 568 return; | |
| 569 } | |
| 570 | |
| 571 serv_chat_invite(gaim_conversation_get_gc(info->conv), | |
| 572 gaim_chat_get_id(GAIM_CHAT(info->conv)), | |
| 573 message, buddy); | |
| 574 } | |
| 575 | |
| 576 gtk_widget_destroy(invite_dialog); | |
| 577 invite_dialog = NULL; | |
| 578 | |
| 579 g_free(info); | |
| 580 } | |
| 581 | |
| 582 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
583 invite_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 584 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
585 InviteBuddyInfo *info = NULL; |
| 4359 | 586 |
| 587 if (invite_dialog == NULL) { | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
588 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
589 GaimWindow *win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
590 GaimGtkWindow *gtkwin; |
| 4359 | 591 GtkWidget *label; |
| 592 GtkWidget *vbox, *hbox; | |
| 593 GtkWidget *table; | |
| 594 GtkWidget *img; | |
| 595 | |
| 5024 | 596 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); |
| 4359 | 597 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
598 info = g_new0(InviteBuddyInfo, 1); |
| 4359 | 599 info->conv = conv; |
| 600 | |
| 601 gc = gaim_conversation_get_gc(conv); | |
| 602 win = gaim_conversation_get_window(conv); | |
| 603 gtkwin = GAIM_GTK_WINDOW(win); | |
| 604 | |
| 605 /* Create the new dialog. */ | |
| 606 invite_dialog = gtk_dialog_new_with_buttons( | |
| 607 _("Gaim - Invite Buddy Into Chat Room"), | |
| 608 GTK_WINDOW(gtkwin->window), | |
| 609 GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
| 610 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); | |
| 611 | |
| 612 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog), | |
| 613 GTK_RESPONSE_OK); | |
| 614 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6); | |
| 615 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE); | |
| 616 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE); | |
| 617 | |
| 618 /* Setup the outside spacing. */ | |
| 619 vbox = GTK_DIALOG(invite_dialog)->vbox; | |
| 620 | |
| 621 gtk_box_set_spacing(GTK_BOX(vbox), 12); | |
| 622 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); | |
| 623 | |
| 624 /* Setup the inner hbox and put the dialog's icon in it. */ | |
| 625 hbox = gtk_hbox_new(FALSE, 12); | |
| 626 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 627 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 628 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 629 | |
| 630 /* Setup the right vbox. */ | |
| 631 vbox = gtk_vbox_new(FALSE, 0); | |
| 632 gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 633 | |
| 634 /* Put our happy label in it. */ | |
| 635 label = gtk_label_new(_("Please enter the name of the user you wish " | |
| 636 "to invite, along with an optional invite " | |
| 637 "message.")); | |
| 638 gtk_widget_set_size_request(label, 350, -1); | |
| 639 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 640 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 641 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 642 | |
| 643 /* hbox for the table, and to give it some spacing on the left. */ | |
| 644 hbox = gtk_hbox_new(FALSE, 6); | |
| 645 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 646 | |
| 647 /* Setup the table we're going to use to lay stuff out. */ | |
| 648 table = gtk_table_new(2, 2, FALSE); | |
| 649 gtk_table_set_row_spacings(GTK_TABLE(table), 6); | |
| 650 gtk_table_set_col_spacings(GTK_TABLE(table), 6); | |
| 651 gtk_container_set_border_width(GTK_CONTAINER(table), 12); | |
| 652 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | |
| 653 | |
| 654 /* Now the Buddy label */ | |
| 655 label = gtk_label_new(NULL); | |
| 656 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:")); | |
| 657 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 658 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | |
| 659 | |
| 660 /* Now the Buddy drop-down entry field. */ | |
| 661 info->entry = gtk_combo_new(); | |
| 662 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE); | |
| 663 gtk_entry_set_activates_default( | |
| 664 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE); | |
| 665 | |
| 666 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1); | |
| 667 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry); | |
| 668 | |
| 669 /* Fill in the names. */ | |
| 670 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry), | |
| 671 generate_invite_user_names(gc)); | |
| 672 | |
| 673 | |
| 674 /* Now the label for "Message" */ | |
| 675 label = gtk_label_new(NULL); | |
| 676 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:")); | |
| 677 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 678 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); | |
| 679 | |
| 680 | |
| 681 /* And finally, the Message entry field. */ | |
| 682 info->message = gtk_entry_new(); | |
| 683 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE); | |
| 684 | |
| 685 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2); | |
| 686 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message); | |
| 687 | |
| 688 /* Connect the signals. */ | |
| 689 g_signal_connect(G_OBJECT(invite_dialog), "response", | |
| 690 G_CALLBACK(do_invite), info); | |
| 691 } | |
| 692 | |
| 693 gtk_widget_show_all(invite_dialog); | |
| 694 | |
| 695 if (info != NULL) | |
| 696 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry); | |
| 697 } | |
| 698 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
699 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
700 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
701 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
702 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
703 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
704 save_convo(NULL, gaim_window_get_active_conversation(win)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
705 } |
|
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 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
708 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
709 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
710 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
711 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
712 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
713 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
714 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
715 conv_show_log(NULL, (char *)gaim_conversation_get_name(conv)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
716 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
717 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
718 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
719 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
720 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
721 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
722 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
723 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
724 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
725 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
726 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
727 gaim_conversation_get_name(conv), NULL); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
728 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
729 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
730 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
731 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
732 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
733 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
734 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
735 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
736 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
737 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
738 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
739 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
740 show_insert_link(gtkconv->toolbar.link, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
741 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
742 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
743 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
744 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) |
|
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 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
747 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
748 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
749 gtkconv = GAIM_GTK_CONVERSATION(gaim_window_get_active_conversation(win)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
750 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
751 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
752 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
753 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
754 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
755 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
756 menu_alias_cb(gpointer data, guint action, GtkWidget *widget) |
|
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 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
759 GaimConversation *conv; |
| 6695 | 760 GaimBuddy *b; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
761 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
762 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
763 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
764 b = gaim_find_buddy(gaim_conversation_get_account(conv), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
765 gaim_conversation_get_name(conv)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
766 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
767 if (b != NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
768 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
769 alias_dialog_bud(b); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
770 #if 0 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
771 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
772 alias_dialog_chat((struct chat *)b); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
773 #endif |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
774 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
775 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
776 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
777 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
778 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget) |
|
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 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
781 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
782 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
783 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
784 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
785 info_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
786 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
787 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
788 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
789 menu_invite_cb(gpointer data, guint action, GtkWidget *widget) |
|
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 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
792 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
793 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
794 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
795 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
796 invite_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
797 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
798 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
799 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
800 menu_warn_cb(gpointer data, guint action, GtkWidget *widget) |
|
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 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
803 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
804 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
805 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
806 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
807 warn_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
808 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
809 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
810 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
811 menu_block_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
812 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
813 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
814 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
815 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
816 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
817 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
818 block_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
819 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
820 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
821 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
822 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
823 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
824 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
825 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
826 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
827 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
828 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
829 add_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
830 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
831 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
832 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
833 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
834 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
835 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
836 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
837 close_conv_cb(NULL, gaim_window_get_active_conversation(win)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
838 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
839 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
840 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
841 menu_logging_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
842 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
843 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
844 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
845 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
846 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
847 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
848 if (conv == NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
849 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
850 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
851 gaim_conversation_set_logging(conv, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
852 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
853 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
854 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
855 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
856 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget) |
|
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 GaimWindow *win = (GaimWindow *)data; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
859 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
860 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
861 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
862 conv = gaim_window_get_active_conversation(win); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
863 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
864 if (!conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
865 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
866 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
867 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
868 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
869 gtkconv->make_sound = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
870 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
871 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
872 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
873 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
874 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
875 void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
876 im_cb(GtkWidget *widget, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
877 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
878 GaimConversation *conv2; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
879 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
880 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
881 GaimAccount *account; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
882 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
883 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
884 GtkTreeSelection *sel; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
885 const char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
886 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
887 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
888 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
889 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
890 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
891 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
892 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
893 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
894 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
|
895 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
896 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
897 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
898 if (*name == '@') name++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
899 if (*name == '%') name++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
900 if (*name == '+') name++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
901 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
902 account = gaim_conversation_get_account(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
903 |
|
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6629
diff
changeset
|
904 conv2 = gaim_find_conversation_with_account(name, account); |
|
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6629
diff
changeset
|
905 |
|
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6629
diff
changeset
|
906 if (conv2 != NULL) |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
907 gaim_window_raise(gaim_conversation_get_window(conv2)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
908 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
909 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, name); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
910 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
911 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
912 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
913 ignore_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
914 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
915 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
916 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
917 GaimChat *chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
918 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
919 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
920 GtkTreeSelection *sel; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
921 const char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
922 int pos; |
|
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 chat = GAIM_CHAT(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
925 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
926 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
927 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
928 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
929 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
930 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
931 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
932 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
|
933 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
934 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
935 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
936 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
937 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
938 pos = g_list_index(gaim_chat_get_users(chat), name); |
|
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 if (gaim_chat_is_user_ignored(chat, name)) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
941 gaim_chat_unignore(chat, name); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
942 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
943 gaim_chat_ignore(chat, name); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
944 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
945 add_chat_buddy_common(conv, name, pos); |
|
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 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
948 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
949 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
950 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
951 const char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
952 GaimConversation *conv2; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
953 GaimAccount *account; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
954 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
955 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
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 account = gaim_conversation_get_account(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
958 |
|
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6629
diff
changeset
|
959 conv2 = gaim_find_conversation_with_account(who, account); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
960 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
961 if (conv2 != NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
962 gaim_window_show(gaim_conversation_get_window(conv2)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
963 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
964 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
965 } |
|
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 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
968 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
969 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
970 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
971 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
972 char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
973 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
974 gc = gaim_conversation_get_gc(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
975 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
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 if (gc != NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
978 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
979 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
980 /* |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
981 * If there are special needs for getting info on users in |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
982 * buddy chat "rooms"... |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
983 */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
984 if (prpl_info->get_cb_info != NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
985 prpl_info->get_cb_info(gc, gaim_chat_get_id(GAIM_CHAT(conv)), who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
986 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
987 prpl_info->get_info(gc, who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
988 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
989 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
990 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
991 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
992 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
993 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
994 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
995 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
996 char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
997 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
998 gc = gaim_conversation_get_gc(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
999 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
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 if (gc != NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1002 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1003 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1004 /* |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1005 * 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
|
1006 */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1007 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1008 if (prpl_info->get_cb_away != NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1009 prpl_info->get_cb_away(gc, gaim_chat_get_id(GAIM_CHAT(conv)), who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1010 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1011 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1012 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1013 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1014 menu_chat_add_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1015 { |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1016 GaimAccount *account; |
| 6695 | 1017 GaimBuddy *b; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1018 char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1019 |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1020 account = gaim_conversation_get_account(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1021 name = g_object_get_data(G_OBJECT(w), "user_data"); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1022 b = gaim_find_buddy(account, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1023 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1024 if (b != NULL) |
| 5975 | 1025 show_confirm_del(b); |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1026 else if (account != NULL && gaim_account_is_connected(account)) |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1027 gaim_blist_request_add_buddy(account, name, NULL, NULL); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1028 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1029 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1030 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1031 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1032 static gint |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1033 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1034 GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1035 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1036 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1037 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1038 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1039 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1040 GaimAccount *account; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1041 GtkTreePath *path; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1042 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1043 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1044 GtkTreeViewColumn *column; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1045 gchar *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1046 int x, y; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1047 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1048 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1049 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1050 account = gaim_conversation_get_account(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1051 gc = account->gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1052 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1053 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1054 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1055 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
|
1056 event->x, event->y, &path, &column, &x, &y); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1057 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1058 if (path == NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1059 return FALSE; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1060 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1061 if (gc != NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1062 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1063 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1064 gtk_tree_selection_select_path(GTK_TREE_SELECTION( |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1065 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1066 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1067 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1068 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
|
1069 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1070 if (*who == '@') who++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1071 if (*who == '%') who++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1072 if (*who == '+') who++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1073 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1074 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1075 GaimConversation *c; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1076 |
|
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6629
diff
changeset
|
1077 if ((c = gaim_find_conversation_with_account(who, account)) == NULL) |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1078 c = gaim_conversation_new(GAIM_CONV_IM, account, who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1079 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1080 gaim_conversation_set_account(c, account); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1081 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1082 else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1083 static GtkWidget *menu = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1084 GtkWidget *button; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1085 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1086 /* |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1087 * If a menu already exists, destroy it before creating a new one, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1088 * thus freeing-up the memory it occupied. |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1089 */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1090 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1091 if (menu) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1092 gtk_widget_destroy(menu); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1093 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1094 menu = gtk_menu_new(); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1095 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1096 button = gtk_menu_item_new_with_label(_("IM")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1097 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1098 G_CALLBACK(menu_chat_im_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1099 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1100 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1101 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1102 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1103 if (gaim_chat_is_user_ignored(GAIM_CHAT(conv), who)) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1104 button = gtk_menu_item_new_with_label(_("Un-Ignore")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1105 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1106 button = gtk_menu_item_new_with_label(_("Ignore")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1107 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1108 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1109 G_CALLBACK(ignore_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1110 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1111 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1112 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1113 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1114 if (gc && prpl_info->get_info) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1115 button = gtk_menu_item_new_with_label(_("Info")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1116 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1117 G_CALLBACK(menu_chat_info_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1118 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1119 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1120 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1121 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1122 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1123 if (gc && prpl_info->get_cb_away) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1124 button = gtk_menu_item_new_with_label(_("Get Away Msg")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1125 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1126 G_CALLBACK(menu_chat_get_away_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1127 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1128 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1129 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1130 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1131 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1132 /* Added by Jonas <jonas@birme.se> */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1133 if (gc) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1134 if (gaim_find_buddy(gc->account, who)) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1135 button = gtk_menu_item_new_with_label(_("Remove")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1136 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1137 button = gtk_menu_item_new_with_label(_("Add")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1138 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1139 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1140 G_CALLBACK(menu_chat_add_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1141 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1142 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1143 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1144 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1145 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1146 /* End Jonas */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1147 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1148 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1149 event->button, event->time); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1150 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1151 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1152 return TRUE; |
|
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 |
| 4359 | 1155 static gboolean |
| 1156 entry_key_pressed_cb_2(GtkWidget *entry, GdkEventKey *event, gpointer data) | |
| 1157 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1158 GaimWindow *win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1159 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1160 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1161 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1162 |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1163 conv = (GaimConversation *)data; |
| 4359 | 1164 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 1165 win = gaim_conversation_get_window(conv); | |
| 4362 | 1166 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 1167 |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
1168 if (event->keyval == GDK_Page_Up) { |
| 4359 | 1169 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); |
| 1170 | |
| 1171 if (!(event->state & GDK_CONTROL_MASK)) | |
| 1172 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml)); | |
| 1173 } | |
| 1174 else if (event->keyval == GDK_Page_Down) { | |
| 1175 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1176 | |
| 1177 if (!(event->state & GDK_CONTROL_MASK)) | |
| 1178 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml)); | |
| 1179 } | |
| 6033 | 1180 else if (event->keyval == GDK_F2) { |
| 1181 | |
| 1182 gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps", | |
| 1183 !gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); | |
| 4359 | 1184 } |
| 1185 else if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) { | |
| 1186 if ((event->state & GDK_CONTROL_MASK) && | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1187 gaim_prefs_get_bool("/gaim/gtk/conversations/ctrl_enter_sends")) { |
| 4359 | 1188 |
| 1189 send_cb(NULL, conv); | |
| 1190 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1191 | |
| 1192 return TRUE; | |
| 1193 } | |
| 1194 else if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) && | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1195 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends")) { |
| 4359 | 1196 |
| 1197 send_cb(NULL, conv); | |
| 1198 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1199 | |
| 1200 return TRUE; | |
| 1201 } | |
| 1202 | |
| 1203 return FALSE; | |
| 1204 } | |
| 6014 | 1205 else if ((event->state & GDK_CONTROL_MASK) && (event->keyval == 'm' || |
| 1206 event->keyval == 'M')) { | |
| 4359 | 1207 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); |
| 1208 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, "\n", 1); | |
| 1209 } | |
| 1210 else if (event->state & GDK_CONTROL_MASK) { | |
| 1211 switch (event->keyval) { | |
| 1212 case GDK_Up: | |
| 1213 if (!conv->send_history) | |
| 1214 break; | |
| 1215 | |
| 1216 if (!conv->send_history->prev) { | |
| 1217 GtkTextIter start, end; | |
| 1218 | |
| 1219 if (conv->send_history->data) | |
| 1220 g_free(conv->send_history->data); | |
| 1221 | |
| 1222 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
| 1223 &start); | |
| 1224 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end); | |
| 1225 | |
| 1226 conv->send_history->data = | |
| 1227 gtk_text_buffer_get_text(gtkconv->entry_buffer, | |
| 1228 &start, &end, FALSE); | |
| 1229 } | |
| 1230 | |
| 1231 if (conv->send_history->next && | |
| 1232 conv->send_history->next->data) { | |
| 1233 | |
| 1234 conv->send_history = conv->send_history->next; | |
| 1235 gtk_text_buffer_set_text(gtkconv->entry_buffer, | |
| 1236 conv->send_history->data, -1); | |
| 1237 } | |
| 1238 | |
| 1239 break; | |
| 1240 | |
| 1241 case GDK_Down: | |
| 1242 if (!conv->send_history) | |
| 1243 break; | |
| 1244 | |
| 1245 if (conv->send_history->prev) { | |
| 1246 conv->send_history = conv->send_history->prev; | |
| 1247 | |
| 1248 if (conv->send_history->data) | |
| 1249 gtk_text_buffer_set_text(gtkconv->entry_buffer, | |
| 1250 conv->send_history->data, -1); | |
| 1251 } | |
| 1252 | |
| 1253 break; | |
| 1254 } | |
| 1255 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1256 if (gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")) { |
| 4359 | 1257 switch (event->keyval) { |
| 1258 case 'i': | |
| 1259 case 'I': | |
| 4685 | 1260 set_toggle(gtkconv->toolbar.italic, |
| 4359 | 1261 !gtk_toggle_button_get_active( |
| 1262 GTK_TOGGLE_BUTTON(gtkconv->toolbar.italic))); | |
| 1263 | |
| 1264 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1265 "key_press_event"); | |
| 1266 break; | |
| 1267 | |
| 1268 case 'u': /* ctrl-u is GDK_Clear, which clears the line. */ | |
| 1269 case 'U': | |
| 4685 | 1270 set_toggle(gtkconv->toolbar.underline, |
| 4359 | 1271 !gtk_toggle_button_get_active( |
| 1272 GTK_TOGGLE_BUTTON(gtkconv->toolbar.underline))); | |
| 1273 | |
| 1274 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1275 "key_press_event"); | |
| 1276 break; | |
| 1277 | |
| 1278 case 'b': /* ctrl-b is GDK_Left, which moves backwards. */ | |
| 1279 case 'B': | |
| 4685 | 1280 set_toggle(gtkconv->toolbar.bold, |
| 4359 | 1281 !gtk_toggle_button_get_active( |
| 1282 GTK_TOGGLE_BUTTON(gtkconv->toolbar.bold))); | |
| 1283 | |
| 1284 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1285 "key_press_event"); | |
| 1286 break; | |
| 6014 | 1287 |
| 4359 | 1288 case '-': |
| 6015 | 1289 set_toggle(gtkconv->toolbar.smaller_size, |
| 1290 !gtk_toggle_button_get_active( | |
| 1291 GTK_TOGGLE_BUTTON(gtkconv->toolbar.smaller_size))); | |
| 6014 | 1292 |
| 4359 | 1293 g_signal_stop_emission_by_name(G_OBJECT(entry), |
| 1294 "key_press_event"); | |
| 1295 break; | |
| 1296 | |
| 1297 case '=': | |
| 1298 case '+': | |
| 6015 | 1299 set_toggle(gtkconv->toolbar.larger_size, |
| 1300 !gtk_toggle_button_get_active( | |
| 1301 GTK_TOGGLE_BUTTON(gtkconv->toolbar.larger_size))); | |
| 4359 | 1302 |
| 1303 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1304 "key_press_event"); | |
| 1305 break; | |
| 1306 | |
| 1307 case '0': | |
| 4685 | 1308 set_toggle(gtkconv->toolbar.normal_size, |
| 1309 !gtk_toggle_button_get_active( | |
| 1310 GTK_TOGGLE_BUTTON(gtkconv->toolbar.normal_size))); | |
| 4359 | 1311 |
| 1312 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1313 "key_press_event"); | |
| 1314 break; | |
| 1315 | |
| 1316 case 'f': | |
| 1317 case 'F': | |
| 4685 | 1318 set_toggle(gtkconv->toolbar.font, |
| 4359 | 1319 !gtk_toggle_button_get_active( |
| 4685 | 1320 GTK_TOGGLE_BUTTON(gtkconv->toolbar.font))); |
| 4359 | 1321 |
| 1322 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1323 "key_press_event"); | |
| 1324 break; | |
| 1325 } | |
| 1326 } | |
| 1327 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1328 if (gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")) { |
| 4359 | 1329 char buf[7]; |
| 1330 | |
| 1331 *buf = '\0'; | |
| 1332 | |
| 1333 switch (event->keyval) { | |
| 1334 case '1': strcpy(buf, ":-)"); break; | |
| 1335 case '2': strcpy(buf, ":-("); break; | |
| 1336 case '3': strcpy(buf, ";-)"); break; | |
| 1337 case '4': strcpy(buf, ":-P"); break; | |
| 1338 case '5': strcpy(buf, "=-O"); break; | |
| 1339 case '6': strcpy(buf, ":-*"); break; | |
| 1340 case '7': strcpy(buf, ">:o"); break; | |
| 1341 case '8': strcpy(buf, "8-)"); break; | |
| 1342 case '!': strcpy(buf, ":-$"); break; | |
| 1343 case '@': strcpy(buf, ":-!"); break; | |
| 1344 case '#': strcpy(buf, ":-["); break; | |
| 1345 case '$': strcpy(buf, "O:-)"); break; | |
| 1346 case '%': strcpy(buf, ":-/"); break; | |
| 1347 case '^': strcpy(buf, ":'("); break; | |
| 1348 case '&': strcpy(buf, ":-X"); break; | |
| 1349 case '*': strcpy(buf, ":-D"); break; | |
| 1350 default: break; | |
| 1351 } | |
| 1352 | |
| 1353 if (*buf) { | |
| 1354 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 1355 buf, -1); | |
| 1356 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1357 } | |
| 1358 } | |
| 1359 | |
| 1360 if (event->keyval == 'l') { | |
| 1361 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); | |
| 1362 g_string_free(conv->history, TRUE); | |
| 1363 conv->history = g_string_new(""); | |
| 1364 } | |
| 1365 else if (event->keyval == 'n') { | |
| 1366 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1367 | |
| 1368 show_im_dialog(); | |
| 1369 } | |
| 1370 else if (event->keyval == 'z') { | |
| 1371 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 5133 | 1372 |
| 1373 gtk_window_iconify(GTK_WINDOW(gtkwin->window)); | |
| 4359 | 1374 } |
| 1375 else if (event->keyval == '[') { | |
| 1376 gaim_window_switch_conversation(win, | |
| 1377 gaim_conversation_get_index(conv) - 1); | |
| 1378 | |
| 1379 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1380 } | |
| 1381 else if (event->keyval == ']') { | |
| 1382 gaim_window_switch_conversation(win, | |
| 1383 gaim_conversation_get_index(conv) + 1); | |
| 1384 | |
| 1385 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1386 } | |
| 1387 else if (event->keyval == GDK_Tab) { | |
| 1388 move_next_tab(conv); | |
| 1389 | |
| 1390 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1391 | |
| 1392 return TRUE; | |
| 1393 } | |
| 1394 } | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1395 else if (event->keyval == GDK_Tab && |
| 4359 | 1396 gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1397 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/tab_completion")) { |
| 4359 | 1398 |
| 1399 tab_complete(conv); | |
| 1400 | |
| 1401 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1402 | |
| 1403 return TRUE; | |
| 1404 } | |
| 1405 else if ((event->state & GDK_MOD1_MASK) && | |
| 1406 event->keyval > '0' && event->keyval <= '9') { | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1407 |
| 4359 | 1408 gaim_window_switch_conversation(win, event->keyval - '1'); |
| 1409 | |
| 1410 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1411 } | |
| 1412 | |
| 1413 return FALSE; | |
| 1414 } | |
| 1415 | |
| 1416 /* | |
| 1417 * NOTE: | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1418 * 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
|
1419 * further. I have no idea *why* we need this, but we do ... It |
| 4359 | 1420 * 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
|
1421 * going all the way down to the notebook. I suspect a bug in |
| 4359 | 1422 * GtkTextView, but I'm not ready to point any fingers yet. |
| 1423 */ | |
| 1424 static gboolean | |
| 1425 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) | |
| 1426 { | |
| 1427 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
| 1428 /* Right single click */ | |
| 1429 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event"); | |
| 1430 | |
| 1431 return TRUE; | |
| 1432 } | |
| 1433 | |
| 1434 return FALSE; | |
| 1435 } | |
| 1436 | |
| 6057 | 1437 static gboolean |
| 1438 refocus_entry_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) | |
| 1439 { | |
| 1440 GaimGtkConversation *gtkconv = data; | |
| 1441 | |
| 1442 gtk_widget_grab_focus(gtkconv->entry); | |
| 1443 | |
| 1444 return FALSE; | |
| 1445 } | |
| 1446 | |
| 4359 | 1447 static void |
| 4673 | 1448 menu_conv_sel_send_cb(GObject *m, gpointer data) |
| 4359 | 1449 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1450 GaimWindow *win = g_object_get_data(m, "user_data"); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
1451 GaimAccount *account = g_object_get_data(m, "gaim_account"); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1452 GaimConversation *conv; |
| 4359 | 1453 |
| 1454 conv = gaim_window_get_active_conversation(win); | |
| 1455 | |
| 4491 | 1456 gaim_conversation_set_account(conv, account); |
| 4359 | 1457 } |
| 1458 | |
| 1459 static void | |
| 1460 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position, | |
| 1461 gchar *new_text, gint new_text_length, gpointer user_data) | |
| 1462 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1463 GaimConversation *conv = (GaimConversation *)user_data; |
| 4359 | 1464 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1465 g_return_if_fail(conv != NULL); |
| 4359 | 1466 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1467 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 1468 return; |
| 1469 | |
| 1470 got_typing_keypress(conv, (gtk_text_iter_is_start(position) && | |
| 1471 gtk_text_iter_is_end(position))); | |
| 1472 } | |
| 1473 | |
| 1474 static void | |
| 1475 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos, | |
| 1476 GtkTextIter *end_pos, gpointer user_data) | |
| 1477 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1478 GaimConversation *conv = (GaimConversation *)user_data; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1479 GaimIm *im; |
| 4359 | 1480 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1481 g_return_if_fail(conv != NULL); |
| 4359 | 1482 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1483 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 1484 return; |
| 1485 | |
| 1486 im = GAIM_IM(conv); | |
| 1487 | |
| 1488 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) { | |
| 1489 | |
| 1490 /* We deleted all the text, so turn off typing. */ | |
| 1491 if (gaim_im_get_type_again_timeout(im)) | |
| 1492 gaim_im_stop_type_again_timeout(im); | |
| 1493 | |
| 1494 serv_send_typing(gaim_conversation_get_gc(conv), | |
| 6695 | 1495 gaim_conversation_get_name(conv), |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
1496 GAIM_NOT_TYPING); |
| 4359 | 1497 } |
| 1498 else { | |
| 1499 /* We're deleting, but not all of it, so it counts as typing. */ | |
| 1500 got_typing_keypress(conv, FALSE); | |
| 1501 } | |
| 1502 } | |
| 1503 | |
| 1504 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1505 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget) |
| 4359 | 1506 { |
| 1507 static GdkCursor *cursor = NULL; | |
| 1508 | |
| 1509 gtkwin->in_drag = TRUE; | |
| 1510 | |
| 1511 if (gtkwin->drag_leave_signal) { | |
| 1512 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1513 gtkwin->drag_leave_signal); | |
| 1514 | |
| 1515 gtkwin->drag_leave_signal = 0; | |
| 1516 } | |
| 1517 | |
| 1518 if (cursor == NULL) | |
| 1519 cursor = gdk_cursor_new(GDK_FLEUR); | |
| 1520 | |
| 1521 /* Grab the pointer */ | |
| 1522 gtk_grab_add(gtkwin->notebook); | |
|
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1523 #ifndef _WIN32 |
|
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1524 /* 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
|
1525 always be true after a button press. */ |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1526 if (!gdk_pointer_is_grabbed()) |
|
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1527 #endif |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1528 gdk_pointer_grab(gtkwin->notebook->window, FALSE, |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1529 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1530 NULL, cursor, GDK_CURRENT_TIME); |
| 4359 | 1531 } |
| 1532 | |
| 1533 static gboolean | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1534 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimWindow *win) |
| 4359 | 1535 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1536 GaimGtkWindow *gtkwin; |
| 4359 | 1537 |
| 1538 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1539 | |
| 1540 /* | |
| 1541 * Make sure the user moved the mouse far enough for the | |
| 1542 * drag to be initiated. | |
| 1543 */ | |
| 1544 if (gtkwin->in_predrag) { | |
| 1545 if (e->x_root < gtkwin->drag_min_x || | |
| 1546 e->x_root >= gtkwin->drag_max_x || | |
| 1547 e->y_root < gtkwin->drag_min_y || | |
| 1548 e->y_root >= gtkwin->drag_max_y) { | |
| 1549 | |
| 1550 gtkwin->in_predrag = FALSE; | |
| 1551 notebook_init_grab(gtkwin, widget); | |
| 1552 } | |
| 1553 } | |
| 1554 else { /* Otherwise, draw the arrows. */ | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1555 GaimWindow *dest_win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1556 GaimGtkWindow *dest_gtkwin; |
| 4359 | 1557 GtkNotebook *dest_notebook; |
| 1558 GtkWidget *tab, *last_vis_tab = NULL; | |
| 1559 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1; | |
| 1560 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y; | |
| 1561 gboolean horiz_tabs = FALSE, tab_found = FALSE; | |
| 1562 GList *l; | |
| 1563 | |
| 1564 /* Get the window that the cursor is over. */ | |
| 1565 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); | |
| 1566 | |
| 1567 if (dest_win == NULL) { | |
| 1568 dnd_hints_hide_all(); | |
| 1569 | |
| 1570 return TRUE; | |
| 1571 } | |
| 1572 | |
| 1573 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); | |
| 1574 | |
| 1575 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook); | |
| 1576 | |
| 1577 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y); | |
| 1578 | |
| 1579 arrow1_x = arrow2_x = nb_x; | |
| 1580 arrow1_y = arrow2_y = nb_y; | |
| 1581 | |
| 1582 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
| 1583 e->x_root, e->y_root); | |
| 1584 | |
| 1585 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP || | |
| 1586 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) { | |
| 1587 | |
| 1588 horiz_tabs = TRUE; | |
| 1589 } | |
| 1590 | |
| 1591 /* Find out where to put the arrows. */ | |
| 1592 for (l = gaim_window_get_conversations(dest_win), i = 0; | |
| 1593 l != NULL; | |
| 1594 l = l->next, i++) { | |
| 1595 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1596 GaimConversation *conv = l->data; |
| 4359 | 1597 |
| 1598 tab = GAIM_GTK_CONVERSATION(conv)->tabby; | |
| 1599 | |
| 1600 /* | |
| 1601 * If this is the correct tab, record the positions | |
| 1602 * for the arrows. | |
| 1603 */ | |
| 1604 if (i == page_num) { | |
| 1605 if (horiz_tabs) { | |
| 1606 arrow1_x = arrow2_x = nb_x + tab->allocation.x; | |
| 1607 arrow1_y = nb_y + tab->allocation.y; | |
| 1608 arrow2_y = nb_y + tab->allocation.y + | |
| 1609 tab->allocation.height; | |
| 1610 } | |
| 1611 else { | |
| 1612 arrow1_x = nb_x + tab->allocation.x; | |
| 1613 arrow2_x = nb_x + tab->allocation.x + | |
| 1614 tab->allocation.width; | |
| 1615 arrow1_y = arrow2_y = nb_y + tab->allocation.y; | |
| 1616 } | |
| 1617 | |
| 1618 tab_found = TRUE; | |
| 1619 break; | |
| 1620 } | |
| 1621 else { /* Keep track of the right-most tab that we see. */ | |
| 1622 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) { | |
| 1623 last_vis_tab = tab; | |
| 1624 last_vis_tab_loc = tab->allocation.x; | |
| 1625 } | |
| 1626 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) { | |
| 1627 last_vis_tab = tab; | |
| 1628 last_vis_tab_loc = tab->allocation.y; | |
| 1629 } | |
| 1630 } | |
| 1631 } | |
| 1632 | |
| 1633 /* | |
| 1634 * If we didn't find the tab, then we'll just place the | |
| 1635 * arrows to the right/bottom of the last visible tab. | |
| 1636 */ | |
| 1637 if (!tab_found && last_vis_tab) { | |
| 1638 if (horiz_tabs) { | |
| 1639 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x + | |
| 1640 last_vis_tab->allocation.width; | |
| 1641 arrow1_y = nb_y + last_vis_tab->allocation.y; | |
| 1642 arrow2_y = nb_y + last_vis_tab->allocation.y + | |
| 1643 last_vis_tab->allocation.height; | |
| 1644 } | |
| 1645 else { | |
| 1646 arrow1_x = nb_x + last_vis_tab->allocation.x; | |
| 1647 arrow2_x = nb_x + last_vis_tab->allocation.x + | |
| 1648 last_vis_tab->allocation.width; | |
| 1649 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y + | |
| 1650 last_vis_tab->allocation.height; | |
| 1651 } | |
| 1652 } | |
| 1653 | |
| 1654 if (horiz_tabs) { | |
| 1655 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y); | |
| 1656 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y); | |
| 1657 } | |
| 1658 else { | |
| 1659 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y); | |
| 1660 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y); | |
| 1661 } | |
| 1662 } | |
| 1663 | |
| 1664 return TRUE; | |
| 1665 } | |
| 1666 | |
| 1667 static gboolean | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1668 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimWindow *win) |
| 4359 | 1669 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1670 GaimGtkWindow *gtkwin; |
| 4359 | 1671 |
| 1672 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1673 | |
| 1674 if (gtkwin->in_drag) | |
| 1675 return FALSE; | |
| 1676 | |
| 1677 if (e->x_root < gtkwin->drag_min_x || | |
| 1678 e->x_root >= gtkwin->drag_max_x || | |
| 1679 e->y_root < gtkwin->drag_min_y || | |
| 1680 e->y_root >= gtkwin->drag_max_y) { | |
| 1681 | |
| 1682 gtkwin->in_predrag = FALSE; | |
| 1683 notebook_init_grab(gtkwin, widget); | |
| 1684 } | |
| 1685 | |
| 1686 return TRUE; | |
| 1687 } | |
| 1688 | |
| 1689 /* | |
| 1690 * THANK YOU GALEON! | |
| 1691 */ | |
| 1692 static gboolean | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1693 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimWindow *win) |
| 4359 | 1694 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1695 GaimGtkWindow *gtkwin; |
| 4359 | 1696 gint nb_x, nb_y, x_rel, y_rel; |
| 1697 GList *l; | |
| 1698 int tab_clicked; | |
| 1699 | |
| 1700 if (e->button != 1 || e->type != GDK_BUTTON_PRESS) | |
| 1701 return FALSE; | |
| 1702 | |
| 1703 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1704 | |
| 1705 if (gtkwin->in_drag) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1706 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1707 "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
|
1708 return TRUE; |
| 4359 | 1709 } |
| 1710 | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1711 /* |
| 4359 | 1712 * Make sure a tab was actually clicked. The arrow buttons |
| 1713 * mess things up. | |
| 1714 */ | |
| 1715 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root); | |
| 1716 | |
| 1717 if (tab_clicked == -1) | |
| 1718 return FALSE; | |
| 1719 | |
| 1720 /* | |
| 1721 * Get the relative position of the press event, with regards to | |
| 1722 * the position of the notebook. | |
| 1723 */ | |
| 1724 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 1725 | |
| 1726 x_rel = e->x_root - nb_x; | |
| 1727 y_rel = e->y_root - nb_y; | |
| 1728 | |
| 1729 /* Reset the min/max x/y */ | |
| 1730 gtkwin->drag_min_x = 0; | |
| 1731 gtkwin->drag_min_y = 0; | |
| 1732 gtkwin->drag_max_x = 0; | |
| 1733 gtkwin->drag_max_y = 0; | |
| 1734 | |
| 1735 /* Find out which tab was dragged. */ | |
| 1736 for (l = gaim_window_get_conversations(win); l != NULL; l = l->next) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1737 GaimConversation *conv = l->data; |
| 4359 | 1738 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby; |
| 1739 | |
| 1740 if (!GTK_WIDGET_VISIBLE(tab)) | |
| 1741 continue; | |
| 1742 | |
| 1743 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel) | |
| 1744 break; | |
| 1745 | |
| 1746 /* Save the borders of the tab. */ | |
| 1747 gtkwin->drag_min_x = tab->allocation.x + nb_x; | |
| 1748 gtkwin->drag_min_y = tab->allocation.y + nb_y; | |
| 1749 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x; | |
| 1750 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y; | |
| 1751 } | |
| 1752 | |
| 1753 /* Make sure the click occurred in the tab. */ | |
| 1754 if (e->x_root < gtkwin->drag_min_x || | |
| 1755 e->x_root >= gtkwin->drag_max_x || | |
| 1756 e->y_root < gtkwin->drag_min_y || | |
| 1757 e->y_root >= gtkwin->drag_max_y) { | |
| 1758 | |
| 1759 return FALSE; | |
| 1760 } | |
| 1761 | |
| 1762 gtkwin->in_predrag = TRUE; | |
| 1763 | |
| 1764 /* Connect the new motion signals. */ | |
| 1765 gtkwin->drag_motion_signal = | |
| 1766 g_signal_connect(G_OBJECT(widget), "motion_notify_event", | |
| 1767 G_CALLBACK(notebook_motion_cb), win); | |
| 1768 | |
| 1769 gtkwin->drag_leave_signal = | |
| 1770 g_signal_connect(G_OBJECT(widget), "leave_notify_event", | |
| 1771 G_CALLBACK(notebook_leave_cb), win); | |
| 1772 | |
| 1773 return FALSE; | |
| 1774 } | |
| 1775 | |
| 1776 static gboolean | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1777 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimWindow *win) |
| 4359 | 1778 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1779 GaimWindow *dest_win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1780 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1781 GaimGtkWindow *dest_gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1782 GaimConversation *conv; |
| 4359 | 1783 GtkNotebook *dest_notebook; |
| 1784 gint dest_page_num; | |
| 1785 | |
| 1786 /* | |
| 1787 * Don't check to make sure that the event's window matches the | |
| 1788 * widget's, because we may be getting an event passed on from the | |
| 1789 * close button. | |
| 1790 */ | |
| 1791 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE) | |
| 1792 return FALSE; | |
| 1793 | |
| 1794 if (gdk_pointer_is_grabbed()) { | |
| 1795 gdk_pointer_ungrab(GDK_CURRENT_TIME); | |
| 1796 gtk_grab_remove(widget); | |
| 1797 } | |
| 1798 | |
| 1799 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1800 | |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1801 if (!gtkwin->in_predrag && !gtkwin->in_drag) |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1802 return FALSE; |
| 4359 | 1803 |
| 1804 /* Disconnect the motion signal. */ | |
| 1805 if (gtkwin->drag_motion_signal) { | |
| 1806 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1807 gtkwin->drag_motion_signal); | |
| 1808 | |
| 1809 gtkwin->drag_motion_signal = 0; | |
| 1810 } | |
| 1811 | |
| 1812 /* | |
| 1813 * If we're in a pre-drag, we'll also need to disconnect the leave | |
| 1814 * signal. | |
| 1815 */ | |
| 1816 if (gtkwin->in_predrag) { | |
| 1817 gtkwin->in_predrag = FALSE; | |
| 1818 | |
| 1819 if (gtkwin->drag_leave_signal) { | |
| 1820 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1821 gtkwin->drag_leave_signal); | |
| 1822 | |
| 1823 gtkwin->drag_leave_signal = 0; | |
| 1824 } | |
| 1825 } | |
| 1826 | |
| 1827 /* If we're not in drag... */ | |
| 1828 /* We're perfectly normal people! */ | |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1829 if (!gtkwin->in_drag) |
| 4359 | 1830 return FALSE; |
| 1831 | |
| 1832 gtkwin->in_drag = FALSE; | |
| 1833 | |
| 1834 dnd_hints_hide_all(); | |
| 1835 | |
|
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1836 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); |
| 4359 | 1837 |
| 1838 conv = gaim_window_get_active_conversation(win); | |
| 1839 | |
| 1840 if (dest_win == NULL) { | |
| 1841 if (gaim_window_get_conversation_count(win) < 2) | |
| 1842 return FALSE; | |
| 1843 | |
| 1844 if (gaim_window_get_conversation_count(win) > 1) { | |
| 1845 /* Make a new window to stick this to. */ | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1846 GaimWindow *new_win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1847 GaimGtkWindow *new_gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1848 GaimGtkConversation *gtkconv; |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1849 gint win_width, win_height; |
| 5121 | 1850 |
| 1851 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4359 | 1852 |
| 1853 new_win = gaim_window_new(); | |
| 5121 | 1854 |
|
5139
d0182ae31ab8
[gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents:
5133
diff
changeset
|
1855 gaim_window_add_conversation(new_win, |
|
d0182ae31ab8
[gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents:
5133
diff
changeset
|
1856 gaim_window_remove_conversation(win, |
|
d0182ae31ab8
[gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents:
5133
diff
changeset
|
1857 gaim_conversation_get_index(conv))); |
| 5121 | 1858 |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1859 new_gtkwin = GAIM_GTK_WINDOW(new_win); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1860 |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1861 gtk_window_get_size(GTK_WINDOW(new_gtkwin->window), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1862 &win_width, &win_height); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1863 |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1864 gtk_window_move(GTK_WINDOW(new_gtkwin->window), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1865 e->x_root - (win_width / 2), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1866 e->y_root - (win_height / 2)); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1867 |
| 4359 | 1868 gaim_window_show(new_win); |
| 1869 } | |
| 1870 | |
| 1871 return TRUE; | |
| 1872 } | |
| 1873 | |
|
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1874 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); |
|
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1875 |
| 4359 | 1876 /* Get the destination notebook. */ |
| 1877 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 1878 | |
| 1879 /* Get the destination page number. */ | |
| 1880 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
| 1881 e->x_root, e->y_root); | |
| 1882 | |
| 1883 if (win == dest_win) { | |
| 1884 gaim_window_move_conversation(win, | |
| 1885 gaim_conversation_get_index(conv), dest_page_num); | |
| 1886 } | |
| 1887 else { | |
| 1888 size_t pos; | |
| 1889 | |
| 1890 gaim_window_remove_conversation(win, | |
| 1891 gaim_conversation_get_index(conv)); | |
| 1892 | |
| 1893 pos = gaim_window_add_conversation(dest_win, conv); | |
| 1894 | |
|
5901
74e273e22f94
[gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents:
5881
diff
changeset
|
1895 if (pos != dest_page_num) |
|
74e273e22f94
[gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents:
5881
diff
changeset
|
1896 gaim_window_move_conversation(dest_win, pos, dest_page_num); |
| 4359 | 1897 |
| 1898 gaim_window_switch_conversation(dest_win, dest_page_num); | |
| 1899 } | |
| 1900 | |
| 1901 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 1902 | |
| 1903 return TRUE; | |
| 1904 } | |
| 1905 | |
| 1906 static void | |
| 1907 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, | |
| 1908 gpointer user_data) | |
| 1909 { | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
1910 GaimPluginProtocolInfo *prpl_info = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1911 GaimWindow *win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1912 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1913 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1914 GaimGtkWindow *gtkwin; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
1915 GaimConnection *gc; |
| 4359 | 1916 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1917 win = (GaimWindow *)user_data; |
| 4359 | 1918 |
|
4598
a064e437d5eb
[gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents:
4596
diff
changeset
|
1919 conv = gaim_window_get_conversation_at(win, page_num); |
|
a064e437d5eb
[gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents:
4596
diff
changeset
|
1920 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1921 g_return_if_fail(conv != NULL); |
|
4598
a064e437d5eb
[gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents:
4596
diff
changeset
|
1922 |
| 4359 | 1923 gc = gaim_conversation_get_gc(conv); |
| 1924 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1925 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 1926 | |
| 1927 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE); | |
| 1928 | |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
1929 if (gc != NULL) { |
|
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
1930 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
1931 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
1932 } |
|
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
1933 |
| 4359 | 1934 /* Update the menubar */ |
| 1935 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1936 gtk_widget_show(gtkwin->menu.view_log); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1937 |
|
5929
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
1938 if (gc && prpl_info->options & OPT_PROTO_IM_IMAGE) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1939 gtk_widget_show(gtkwin->menu.insert_image); |
|
5929
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
1940 gtk_widget_set_sensitive(gtkconv->toolbar.image, TRUE); |
|
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
1941 |
|
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
1942 } |
|
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
1943 else { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1944 gtk_widget_hide(gtkwin->menu.insert_image); |
|
5929
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
1945 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); |
|
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
1946 } |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1947 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1948 gtk_widget_show(gtkwin->menu.add_pounce); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1949 gtk_widget_show(gtkwin->menu.get_info); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1950 gtk_widget_show(gtkwin->menu.warn); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1951 gtk_widget_show(gtkwin->menu.block); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1952 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1953 if (gaim_find_buddy(gaim_conversation_get_account(conv), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1954 gaim_conversation_get_name(conv)) == NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1955 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1956 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1957 gtk_widget_hide(gtkwin->menu.remove); |
|
5911
865f235ffaf0
[gaim-migrate @ 6343]
Christian Hammond <chipx86@chipx86.com>
parents:
5908
diff
changeset
|
1958 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1959 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1960 else { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1961 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1962 gtk_widget_hide(gtkwin->menu.add); |
|
5911
865f235ffaf0
[gaim-migrate @ 6343]
Christian Hammond <chipx86@chipx86.com>
parents:
5908
diff
changeset
|
1963 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1964 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1965 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1966 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1967 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1968 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1969 gtk_widget_hide(gtkwin->menu.invite); |
| 4359 | 1970 |
| 1971 if (gtkwin->menu.send_as != NULL) | |
| 4685 | 1972 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 1973 } |
|
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
1974 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1975 gtk_widget_show(gtkwin->menu.invite); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1976 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1977 gtk_widget_hide(gtkwin->menu.view_log); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1978 gtk_widget_hide(gtkwin->menu.insert_image); |
|
5929
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
1979 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1980 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1981 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1982 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1983 gtk_widget_hide(gtkwin->menu.add_pounce); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1984 gtk_widget_hide(gtkwin->menu.get_info); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1985 gtk_widget_hide(gtkwin->menu.warn); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1986 gtk_widget_hide(gtkwin->menu.block); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1987 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1988 if (gaim_find_chat(gaim_conversation_get_gc(conv), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1989 gaim_chat_get_id(GAIM_CHAT(conv))) == NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1990 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1991 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1992 gtk_widget_hide(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1993 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1994 else { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1995 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1996 gtk_widget_hide(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1997 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1998 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1999 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2000 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); |
| 4359 | 2001 |
| 2002 if (gtkwin->menu.send_as != NULL) | |
|
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2003 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 2004 } |
| 2005 | |
| 4736 | 2006 update_typing_icon(conv); |
| 2007 | |
| 4359 | 2008 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging), |
| 2009 gaim_conversation_is_logging(conv)); | |
| 2010 | |
| 2011 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds), | |
| 2012 gtkconv->make_sound); | |
| 2013 | |
| 2014 gtk_widget_grab_focus(gtkconv->entry); | |
| 4681 | 2015 |
| 4965 | 2016 gtk_window_set_title(GTK_WINDOW(gtkwin->window), |
|
5462
8355eeeb52a3
[gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2017 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
| 4359 | 2018 } |
| 2019 | |
| 2020 /************************************************************************** | |
| 2021 * Utility functions | |
| 2022 **************************************************************************/ | |
| 2023 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2024 do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv) |
| 4359 | 2025 { |
| 2026 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bold))) | |
| 2027 gaim_gtk_surround(gtkconv, "<B>", "</B>"); | |
| 2028 else | |
| 2029 gaim_gtk_advance_past(gtkconv, "<B>", "</B>"); | |
| 2030 | |
| 2031 gtk_widget_grab_focus(gtkconv->entry); | |
| 2032 } | |
| 2033 | |
| 2034 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2035 do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv) |
| 4359 | 2036 { |
| 2037 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(italic))) | |
| 2038 gaim_gtk_surround(gtkconv, "<I>", "</I>"); | |
| 2039 else | |
| 2040 gaim_gtk_advance_past(gtkconv, "<I>", "</I>"); | |
| 2041 | |
| 2042 gtk_widget_grab_focus(gtkconv->entry); | |
| 2043 } | |
| 2044 | |
| 2045 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2046 do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv) |
| 4359 | 2047 { |
| 2048 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(underline))) | |
| 2049 gaim_gtk_surround(gtkconv, "<U>", "</U>"); | |
| 2050 else | |
| 2051 gaim_gtk_advance_past(gtkconv, "<U>", "</U>"); | |
| 2052 | |
| 2053 gtk_widget_grab_focus(gtkconv->entry); | |
| 2054 } | |
| 2055 | |
| 2056 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2057 do_small(GtkWidget *small, GaimGtkConversation *gtkconv) |
| 4359 | 2058 { |
| 5049 | 2059 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(small))) |
| 2060 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"1\">", "</FONT>"); | |
| 2061 else | |
| 2062 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"1\">", "</FONT>"); | |
| 4359 | 2063 |
| 2064 gtk_widget_grab_focus(gtkconv->entry); | |
| 2065 } | |
| 2066 | |
| 2067 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2068 do_normal(GtkWidget *normal, GaimGtkConversation *gtkconv) |
| 4359 | 2069 { |
| 5049 | 2070 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(normal))) |
| 2071 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"3\">", "</FONT>"); | |
| 2072 else | |
| 2073 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"3\">", "</FONT>"); | |
| 4359 | 2074 |
| 2075 gtk_widget_grab_focus(gtkconv->entry); | |
| 2076 } | |
| 2077 | |
| 2078 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2079 do_big(GtkWidget *large, GaimGtkConversation *gtkconv) |
| 4359 | 2080 { |
| 5049 | 2081 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(large))) |
| 2082 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"5\">", "</FONT>"); | |
| 2083 else | |
| 2084 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"5\">", "</FONT>"); | |
| 4359 | 2085 |
| 2086 gtk_widget_grab_focus(gtkconv->entry); | |
| 2087 } | |
| 2088 | |
| 2089 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2090 toggle_font(GtkWidget *font, GaimConversation *conv) |
| 4359 | 2091 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2092 GaimGtkConversation *gtkconv; |
| 4359 | 2093 |
| 2094 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2095 | |
| 2096 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(font))) | |
| 2097 show_font_dialog(conv, font); | |
| 5582 | 2098 else if (gtkconv->dialogs.font != NULL) |
| 4359 | 2099 cancel_font(font, conv); |
| 2100 else | |
| 2101 gaim_gtk_advance_past(gtkconv, "<FONT FACE>", "</FONT>"); | |
| 2102 } | |
| 2103 | |
| 2104 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2105 toggle_fg_color(GtkWidget *color, GaimConversation *conv) |
| 4359 | 2106 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2107 GaimGtkConversation *gtkconv; |
| 4359 | 2108 |
| 2109 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2110 | |
| 2111 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) | |
| 2112 show_fgcolor_dialog(conv, color); | |
| 2113 else if (gtkconv->dialogs.fg_color != NULL) | |
| 2114 cancel_fgcolor(color, conv); | |
| 2115 else | |
| 2116 gaim_gtk_advance_past(gtkconv, "<FONT COLOR>", "</FONT>"); | |
| 2117 } | |
| 2118 | |
| 2119 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2120 toggle_bg_color(GtkWidget *color, GaimConversation *conv) |
| 4359 | 2121 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2122 GaimGtkConversation *gtkconv; |
| 4359 | 2123 |
| 2124 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2125 | |
| 2126 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) | |
| 2127 show_bgcolor_dialog(conv, color); | |
| 2128 else if (gtkconv->dialogs.bg_color != NULL) | |
| 2129 cancel_bgcolor(color, conv); | |
| 2130 else | |
| 2131 gaim_gtk_advance_past(gtkconv, "<BODY BGCOLOR>", "</BODY>"); | |
| 2132 } | |
| 2133 | |
| 2134 static void | |
| 2135 check_everything(GtkTextBuffer *buffer) | |
| 2136 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2137 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2138 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2139 |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2140 conv = (GaimConversation *)g_object_get_data(G_OBJECT(buffer), |
| 4359 | 2141 "user_data"); |
| 2142 | |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2143 g_return_if_fail(conv != NULL); |
| 4359 | 2144 |
| 2145 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2146 | |
| 2147 /* CONV TODO */ | |
| 2148 } | |
| 2149 | |
| 2150 static void | |
| 4685 | 2151 set_toggle(GtkWidget *tb, gboolean active) |
| 4359 | 2152 { |
| 2153 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tb), active); | |
| 2154 } | |
| 2155 | |
| 2156 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2157 got_typing_keypress(GaimConversation *conv, gboolean first) |
| 4359 | 2158 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2159 GaimIm *im; |
| 4685 | 2160 |
| 4359 | 2161 /* |
| 2162 * 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
|
2163 * send GAIM_TYPED any time soon. |
| 4359 | 2164 */ |
| 2165 | |
| 2166 im = GAIM_IM(conv); | |
| 2167 | |
| 2168 if (gaim_im_get_type_again_timeout(im)) | |
| 2169 gaim_im_stop_type_again_timeout(im); | |
| 2170 | |
| 2171 gaim_im_start_type_again_timeout(im); | |
| 2172 | |
| 2173 if (first || (gaim_im_get_type_again(im) != 0 && | |
| 2174 time(NULL) > gaim_im_get_type_again(im))) { | |
| 2175 | |
| 2176 int timeout = serv_send_typing(gaim_conversation_get_gc(conv), | |
| 2177 (char *)gaim_conversation_get_name(conv), | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2178 GAIM_TYPING); |
| 4359 | 2179 |
| 2180 if (timeout) | |
| 2181 gaim_im_set_type_again(im, time(NULL) + timeout); | |
| 2182 else | |
| 2183 gaim_im_set_type_again(im, 0); | |
| 2184 } | |
| 2185 } | |
| 2186 | |
| 4736 | 2187 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2188 update_typing_icon(GaimConversation *conv) |
| 4736 | 2189 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2190 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2191 GaimIm *im = NULL; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2192 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4736 | 2193 |
| 2194 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); | |
| 2195 | |
| 2196 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
| 2197 im = GAIM_IM(conv); | |
| 2198 | |
| 2199 if(gtkwin->menu.typing_icon) { | |
| 2200 gtk_widget_destroy(gtkwin->menu.typing_icon); | |
| 2201 gtkwin->menu.typing_icon = NULL; | |
| 2202 } | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2203 if(im && gaim_im_get_typing_state(im) == GAIM_TYPING) { |
| 4736 | 2204 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
| 2205 gtk_image_menu_item_set_image( | |
| 2206 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
| 2207 gtk_image_new_from_stock(GAIM_STOCK_TYPING, | |
| 2208 GTK_ICON_SIZE_MENU)); | |
| 4757 | 2209 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
| 4736 | 2210 _("User is typing..."), NULL); |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2211 } else if(im && gaim_im_get_typing_state(im) == GAIM_TYPED) { |
| 4736 | 2212 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
| 2213 gtk_image_menu_item_set_image( | |
| 2214 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
| 2215 gtk_image_new_from_stock(GAIM_STOCK_TYPED, | |
| 2216 GTK_ICON_SIZE_MENU)); | |
| 4757 | 2217 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
| 4736 | 2218 _("User has typed something and paused"), NULL); |
| 2219 } | |
| 2220 | |
| 2221 if(gtkwin->menu.typing_icon) { | |
| 2222 gtk_menu_item_set_right_justified( | |
| 2223 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE); | |
| 2224 gtk_widget_show_all(gtkwin->menu.typing_icon); | |
| 2225 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar), | |
| 2226 gtkwin->menu.typing_icon); | |
| 2227 } | |
| 2228 } | |
| 2229 | |
| 4685 | 2230 static gboolean |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2231 update_send_as_selection(GaimWindow *win) |
| 4359 | 2232 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2233 GaimAccount *account; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2234 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2235 GaimGtkWindow *gtkwin; |
| 4359 | 2236 GtkWidget *menu; |
| 2237 GList *child; | |
| 2238 | |
|
7090
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2239 if (g_list_find(gaim_get_windows(), win) == NULL) |
|
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2240 return FALSE; |
| 4849 | 2241 |
| 4359 | 2242 conv = gaim_window_get_active_conversation(win); |
| 2243 | |
|
5860
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2244 if (conv == NULL) |
|
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2245 return FALSE; |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2246 |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2247 account = gaim_conversation_get_account(conv); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2248 gtkwin = GAIM_GTK_WINDOW(win); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2249 |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2250 if (gtkwin->menu.send_as == NULL) |
| 4685 | 2251 return FALSE; |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2252 |
| 4359 | 2253 gtk_widget_show(gtkwin->menu.send_as); |
| 2254 | |
| 2255 menu = gtk_menu_item_get_submenu( | |
| 2256 GTK_MENU_ITEM(gtkwin->menu.send_as)); | |
| 2257 | |
| 2258 for (child = gtk_container_get_children(GTK_CONTAINER(menu)); | |
| 2259 child != NULL; | |
| 2260 child = child->next) { | |
| 2261 | |
| 2262 GtkWidget *item = child->data; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2263 GaimAccount *item_account = g_object_get_data(G_OBJECT(item), |
| 4673 | 2264 "gaim_account"); |
| 2265 | |
| 2266 if (account == item_account) { | |
| 4359 | 2267 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); |
| 2268 break; | |
| 2269 } | |
| 2270 } | |
|
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2271 |
| 4685 | 2272 return FALSE; |
| 4359 | 2273 } |
| 2274 | |
| 2275 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2276 generate_send_as_items(GaimWindow *win, GaimConversation *deleted_conv) |
| 4359 | 2277 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2278 GaimGtkWindow *gtkwin; |
| 4359 | 2279 GtkWidget *menu; |
| 2280 GtkWidget *menuitem; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2281 GList *gcs; |
| 4359 | 2282 GList *convs; |
| 2283 GSList *group = NULL; | |
| 2284 gboolean first_offline = TRUE; | |
| 2285 gboolean found_online = FALSE; | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2286 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| 4359 | 2287 |
| 2288 gtkwin = GAIM_GTK_WINDOW(win); | |
| 2289 | |
| 2290 if (gtkwin->menu.send_as != NULL) | |
| 2291 gtk_widget_destroy(gtkwin->menu.send_as); | |
| 2292 | |
| 2293 /* See if we have > 1 connection active. */ | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2294 if (g_list_length(gaim_connections_get_all()) < 2) { |
| 4359 | 2295 /* Now make sure we don't have any Offline entries. */ |
| 2296 gboolean found_offline = FALSE; | |
| 2297 | |
| 2298 for (convs = gaim_get_conversations(); | |
| 2299 convs != NULL; | |
| 2300 convs = convs->next) { | |
| 2301 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2302 GaimConversation *conv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2303 GaimAccount *account; |
| 4491 | 2304 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2305 conv = (GaimConversation *)convs->data; |
| 4491 | 2306 account = gaim_conversation_get_account(conv); |
| 2307 | |
|
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2308 if (account != NULL && account->gc == NULL) { |
| 4359 | 2309 found_offline = TRUE; |
| 2310 break; | |
| 2311 } | |
| 2312 } | |
| 2313 | |
| 2314 if (!found_offline) { | |
| 2315 gtkwin->menu.send_as = NULL; | |
| 2316 return; | |
| 2317 } | |
| 2318 } | |
| 2319 | |
| 2320 /* Build the Send As menu */ | |
| 2321 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As")); | |
| 2322 gtk_widget_show(gtkwin->menu.send_as); | |
| 2323 | |
| 2324 menu = gtk_menu_new(); | |
| 2325 | |
| 2326 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar), | |
| 2327 gtkwin->menu.send_as); | |
| 2328 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu); | |
| 2329 | |
| 2330 gtk_widget_show(menu); | |
| 2331 | |
| 2332 /* Fill it with entries. */ | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2333 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) { |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2334 |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2335 GaimConnection *gc; |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2336 GaimAccount *account; |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2337 GtkWidget *box; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2338 GtkWidget *label; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2339 GtkWidget *image; |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2340 GdkPixbuf *pixbuf, *scale; |
| 4359 | 2341 |
| 2342 found_online = TRUE; | |
| 2343 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2344 gc = (GaimConnection *)gcs->data; |
| 4359 | 2345 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2346 /* Create a pixmap for the protocol icon. */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2347 pixbuf = create_prpl_icon(gc->account); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2348 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
|
2349 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2350 /* Now convert it to GtkImage */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2351 if (pixbuf == NULL) |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2352 image = gtk_image_new(); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2353 else |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2354 image = gtk_image_new_from_pixbuf(scale); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2355 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2356 gtk_size_group_add_widget(sg, image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2357 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2358 g_object_unref(G_OBJECT(scale)); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2359 g_object_unref(G_OBJECT(pixbuf)); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2360 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2361 account = gaim_connection_get_account(gc); |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2362 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2363 /* Make our menu item */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2364 menuitem = gtk_radio_menu_item_new_with_label(group, |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2365 gaim_account_get_username(account)); |
| 4793 | 2366 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 4359 | 2367 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2368 /* Do some evil, see some evil, speak some evil. */ |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2369 box = gtk_hbox_new(FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2370 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2371 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2372 g_object_ref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2373 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2374 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2375 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2376 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2377 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2378 g_object_unref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2379 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2380 gtk_container_add(GTK_CONTAINER(menuitem), box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2381 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2382 gtk_widget_show(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2383 gtk_widget_show(image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2384 gtk_widget_show(box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2385 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2386 /* Set our data and callbacks. */ |
| 4359 | 2387 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
| 4673 | 2388 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account); |
| 4359 | 2389 |
| 4786 | 2390 g_signal_connect(G_OBJECT(menuitem), "activate", |
| 4673 | 2391 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
| 4359 | 2392 |
| 2393 gtk_widget_show(menuitem); | |
| 2394 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2395 } | |
| 2396 | |
| 2397 /* | |
| 2398 * Fill it with any accounts that still has an open (yet disabled) window | |
| 2399 * (signed off accounts with a window open). | |
| 2400 */ | |
| 2401 for (convs = gaim_get_conversations(); | |
| 2402 convs != NULL; | |
| 2403 convs = convs->next) { | |
| 2404 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2405 GaimConversation *conv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2406 GaimAccount *account; |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2407 GtkWidget *box; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2408 GtkWidget *label; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2409 GtkWidget *image; |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2410 GdkPixbuf *pixbuf, *scale; |
| 4359 | 2411 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2412 conv = (GaimConversation *)convs->data; |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2413 |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2414 if (conv == deleted_conv) |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2415 continue; |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2416 |
| 4491 | 2417 account = gaim_conversation_get_account(conv); |
| 2418 | |
|
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2419 if (account != NULL && account->gc == NULL) { |
| 4359 | 2420 if (first_offline && found_online) { |
| 2421 menuitem = gtk_separator_menu_item_new(); | |
| 2422 gtk_widget_show(menuitem); | |
| 2423 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2424 | |
| 2425 first_offline = FALSE; | |
| 2426 } | |
| 2427 | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2428 /* Create a pixmap for the protocol icon. */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2429 pixbuf = create_prpl_icon(account); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2430 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2431 GDK_INTERP_BILINEAR); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2432 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2433 /* Now convert it to GtkImage */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2434 if (pixbuf == NULL) |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2435 image = gtk_image_new(); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2436 else |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2437 image = gtk_image_new_from_pixbuf(scale); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2438 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2439 gtk_size_group_add_widget(sg, image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2440 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2441 if (scale != NULL) g_object_unref(scale); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2442 if (pixbuf != NULL) g_object_unref(pixbuf); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2443 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2444 /* Make our menu item */ |
| 4359 | 2445 menuitem = gtk_radio_menu_item_new_with_label(group, |
| 4491 | 2446 account->username); |
| 4793 | 2447 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 4359 | 2448 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2449 /* Do some evil, see some evil, speak some evil. */ |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2450 box = gtk_hbox_new(FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2451 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2452 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2453 g_object_ref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2454 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2455 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2456 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2457 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2458 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2459 g_object_unref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2460 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2461 gtk_container_add(GTK_CONTAINER(menuitem), box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2462 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2463 gtk_widget_show(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2464 gtk_widget_show(image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2465 gtk_widget_show(box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2466 |
| 4359 | 2467 gtk_widget_set_sensitive(menuitem, FALSE); |
| 4786 | 2468 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
| 4674 | 2469 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account); |
| 4359 | 2470 |
| 4786 | 2471 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
2472 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
| 4786 | 2473 |
| 4359 | 2474 gtk_widget_show(menuitem); |
| 2475 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2476 } | |
| 2477 } | |
| 2478 | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2479 g_object_unref(sg); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2480 |
| 4359 | 2481 gtk_widget_show(gtkwin->menu.send_as); |
| 2482 update_send_as_selection(win); | |
| 2483 } | |
| 2484 | |
| 2485 static GList * | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2486 generate_invite_user_names(GaimConnection *gc) |
| 4359 | 2487 { |
| 6695 | 2488 GaimBlistNode *gnode,*cnode,*bnode; |
| 4359 | 2489 static GList *tmp = NULL; |
| 2490 | |
| 2491 if (tmp) | |
| 2492 g_list_free(tmp); | |
| 2493 | |
| 2494 tmp = g_list_append(NULL, ""); | |
| 2495 | |
| 2496 if (gc != NULL) { | |
| 4785 | 2497 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 2498 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 2499 continue; | |
| 6695 | 2500 for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 2501 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 4785 | 2502 continue; |
| 6695 | 2503 for(bnode = cnode->child; bnode; bnode = bnode->next) { |
| 2504 GaimBuddy *buddy; | |
| 2505 | |
| 2506 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 2507 continue; | |
| 2508 | |
| 2509 buddy = (GaimBuddy *)bnode; | |
| 2510 | |
| 2511 if (buddy->account == gc->account && | |
| 2512 GAIM_BUDDY_IS_ONLINE(buddy)) | |
| 2513 tmp = g_list_append(tmp, buddy->name); | |
| 2514 } | |
| 4359 | 2515 } |
| 2516 } | |
| 2517 } | |
| 2518 | |
| 2519 return tmp; | |
| 2520 } | |
| 2521 | |
| 2522 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2523 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos) |
| 4359 | 2524 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2525 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2526 GaimGtkChatPane *gtkchat; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2527 GaimChat *chat; |
| 4359 | 2528 GtkTreeIter iter; |
| 2529 GtkListStore *ls; | |
| 2530 | |
| 2531 chat = GAIM_CHAT(conv); | |
| 2532 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2533 gtkchat = gtkconv->u.chat; | |
| 2534 | |
| 2535 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list))); | |
| 2536 | |
| 2537 gtk_list_store_append(ls, &iter); | |
| 2538 gtk_list_store_set(ls, &iter, 0, | |
| 2539 (gaim_chat_is_user_ignored(chat, name) ? "X" : " "), | |
| 2540 1, name, -1); | |
| 2541 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
| 2542 GTK_SORT_ASCENDING); | |
| 2543 } | |
| 2544 | |
| 2545 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2546 tab_complete(GaimConversation *conv) |
| 4359 | 2547 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2548 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2549 GaimChat *chat; |
| 4359 | 2550 GtkTextIter cursor, word_start, start_buffer; |
| 2551 int start; | |
| 2552 int most_matched = -1; | |
| 2553 char *entered, *partial = NULL; | |
| 2554 char *text; | |
| 2555 GList *matches = NULL; | |
| 2556 GList *nicks = NULL; | |
| 2557 | |
| 2558 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2559 chat = GAIM_CHAT(conv); | |
| 2560 | |
| 2561 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 2562 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2563 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2564 | |
| 2565 word_start = cursor; | |
| 2566 | |
| 2567 /* if there's nothing there just return */ | |
| 2568 if (!gtk_text_iter_compare(&cursor, &start_buffer)) | |
| 2569 return; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
2570 |
| 4359 | 2571 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer, |
| 2572 &cursor, FALSE); | |
| 2573 | |
| 2574 /* if we're at the end of ": " we need to move back 2 spaces */ | |
| 2575 start = strlen(text) - 1; | |
| 2576 | |
| 2577 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) | |
| 2578 gtk_text_iter_backward_chars(&word_start, 2); | |
| 2579 | |
| 2580 /* find the start of the word that we're tabbing */ | |
| 2581 while (start >= 0 && text[start] != ' ') { | |
| 2582 gtk_text_iter_backward_char(&word_start); | |
| 2583 start--; | |
| 2584 } | |
| 2585 | |
| 2586 g_free(text); | |
| 2587 | |
| 2588 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start, | |
| 2589 &cursor, FALSE); | |
| 2590 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
2591 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
| 4359 | 2592 if (strlen(entered) >= 2 && |
| 2593 !strncmp(": ", entered + strlen(entered) - 2, 2)) { | |
| 2594 | |
| 2595 entered[strlen(entered) - 2] = 0; | |
| 2596 } | |
| 2597 } | |
| 2598 | |
| 2599 if (!strlen(entered)) { | |
| 2600 g_free(entered); | |
| 2601 return; | |
| 2602 } | |
| 2603 | |
| 2604 for (nicks = gaim_chat_get_users(chat); | |
| 2605 nicks != NULL; | |
| 2606 nicks = nicks->next) { | |
| 2607 | |
| 2608 char *nick = nicks->data; | |
| 2609 /* this checks to see if the current nick could be a completion */ | |
| 4793 | 2610 if (g_ascii_strncasecmp(nick, entered, strlen(entered))) { |
|
4621
69f028a6f357
[gaim-migrate @ 4912]
Christian Hammond <chipx86@chipx86.com>
parents:
4608
diff
changeset
|
2611 if (*nick != '+' && *nick != '@' && *nick != '%') |
| 4359 | 2612 continue; |
| 2613 | |
| 4793 | 2614 if (g_ascii_strncasecmp(nick + 1, entered, strlen(entered))) { |
| 4359 | 2615 if (nick[0] != '@' || nick[1] != '+') |
| 2616 continue; | |
| 2617 | |
| 4793 | 2618 if (g_ascii_strncasecmp(nick + 2, entered, strlen(entered))) |
| 4359 | 2619 continue; |
| 2620 else | |
| 2621 nick += 2; | |
| 2622 } | |
| 2623 else | |
| 2624 nick++; | |
| 2625 } | |
| 2626 | |
| 2627 /* if we're here, it's a possible completion */ | |
| 2628 | |
| 2629 /* 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
|
2630 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
| 4359 | 2631 gtk_text_buffer_delete(gtkconv->entry_buffer, |
| 2632 &word_start, &cursor); | |
| 2633 | |
| 2634 if (strlen(nick) == strlen(entered)) { | |
| 2635 nicks = (nicks->next | |
| 2636 ? nicks->next | |
| 2637 : gaim_chat_get_users(chat)); | |
| 2638 | |
| 2639 nick = nicks->data; | |
| 2640 | |
| 2641 if (*nick == '@') nick++; | |
|
4621
69f028a6f357
[gaim-migrate @ 4912]
Christian Hammond <chipx86@chipx86.com>
parents:
4608
diff
changeset
|
2642 if (*nick == '%') nick++; |
| 4359 | 2643 if (*nick == '+') nick++; |
| 2644 } | |
| 2645 | |
| 2646 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
| 2647 &start_buffer); | |
| 2648 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2649 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2650 | |
| 2651 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
| 2652 char *tmp = g_strdup_printf("%s: ", nick); | |
| 2653 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 2654 tmp, -1); | |
| 2655 g_free(tmp); | |
| 2656 } | |
| 2657 else | |
| 2658 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 2659 nick, -1); | |
| 2660 | |
| 2661 g_free(entered); | |
| 2662 | |
| 2663 return; | |
| 2664 } | |
| 2665 | |
| 2666 /* we're only here if we're doing new style */ | |
| 2667 if (most_matched == -1) { | |
| 2668 /* | |
| 2669 * this will only get called once, since from now | |
| 2670 * on most_matched is >= 0 | |
| 2671 */ | |
| 2672 most_matched = strlen(nick); | |
| 2673 partial = g_strdup(nick); | |
| 2674 } | |
| 2675 else if (most_matched) { | |
| 4793 | 2676 while (g_ascii_strncasecmp(nick, partial, most_matched)) |
| 4359 | 2677 most_matched--; |
| 2678 | |
| 2679 partial[most_matched] = 0; | |
| 2680 } | |
| 2681 | |
| 2682 matches = g_list_append(matches, nick); | |
| 2683 } | |
| 2684 | |
| 2685 /* we're only here if we're doing new style */ | |
| 2686 | |
| 2687 /* if there weren't any matches, return */ | |
| 2688 if (!matches) { | |
| 2689 /* if matches isn't set partials won't be either */ | |
| 2690 g_free(entered); | |
| 2691 return; | |
| 2692 } | |
| 2693 | |
| 2694 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor); | |
| 2695 | |
| 2696 if (!matches->next) { | |
| 2697 /* there was only one match. fill it in. */ | |
| 2698 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 2699 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2700 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2701 | |
| 2702 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
| 2703 char *tmp = g_strdup_printf("%s: ", (char *)matches->data); | |
| 2704 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1); | |
| 2705 g_free(tmp); | |
| 2706 } | |
| 2707 else | |
| 2708 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 2709 matches->data, -1); | |
| 2710 | |
| 2711 matches = g_list_remove(matches, matches->data); | |
| 2712 } | |
| 2713 else { | |
| 2714 /* | |
| 2715 * there were lots of matches, fill in as much as possible | |
| 2716 * and display all of them | |
| 2717 */ | |
| 2718 char *addthis = g_malloc0(1); | |
| 2719 | |
| 2720 while (matches) { | |
| 2721 char *tmp = addthis; | |
| 2722 addthis = g_strconcat(tmp, matches->data, " ", NULL); | |
| 2723 g_free(tmp); | |
| 2724 matches = g_list_remove(matches, matches->data); | |
| 2725 } | |
| 2726 | |
| 6982 | 2727 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG, |
| 4359 | 2728 time(NULL)); |
| 2729 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1); | |
| 2730 g_free(addthis); | |
| 2731 } | |
| 2732 | |
| 2733 g_free(entered); | |
| 2734 g_free(partial); | |
| 2735 } | |
| 2736 | |
| 2737 static gboolean | |
| 2738 meify(char *message, size_t len) | |
| 2739 { | |
| 2740 /* | |
| 2741 * Read /me-ify: If the message (post-HTML) starts with /me, | |
| 2742 * remove the "/me " part of it (including that space) and return TRUE. | |
| 2743 */ | |
| 2744 char *c; | |
| 2745 gboolean inside_html = 0; | |
| 2746 | |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2747 /* Umm.. this would be very bad if this happens. */ |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2748 g_return_val_if_fail(message != NULL, FALSE); |
| 4359 | 2749 |
| 2750 if (len == -1) | |
| 2751 len = strlen(message); | |
| 2752 | |
| 2753 for (c = message; *c != '\0'; c++, len--) { | |
| 2754 if (inside_html) { | |
| 2755 if (*c == '>') | |
| 2756 inside_html = FALSE; | |
| 2757 } | |
| 2758 else { | |
| 2759 if (*c == '<') | |
| 2760 inside_html = TRUE; | |
| 2761 else | |
| 2762 break; | |
| 2763 } | |
| 2764 } | |
| 2765 | |
| 4793 | 2766 if (*c != '\0' && !g_ascii_strncasecmp(c, "/me ", 4)) { |
| 4359 | 2767 memmove(c, c + 4, len - 3); |
| 2768 | |
| 2769 return TRUE; | |
| 2770 } | |
| 2771 | |
| 2772 return FALSE; | |
| 2773 } | |
| 2774 | |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2775 static void |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2776 save_convo(GtkWidget *save, GaimConversation *c) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2777 { |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2778 char buf[BUF_LONG]; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2779 GtkWidget *window; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2780 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2781 window = gtk_file_selection_new(_("Gaim - Save Conversation")); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2782 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2783 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log", |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2784 gaim_home_dir(), normalize(c->name)); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2785 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2786 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
|
2787 "gaim_conversation", c); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2788 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
| 6038 | 2789 "clicked", G_CALLBACK(do_check_save_convo), window); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2790 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
|
2791 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2792 gtk_widget_show(window); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2793 } |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2794 |
| 4359 | 2795 static GtkItemFactoryEntry menu_items[] = |
| 2796 { | |
| 2797 /* Conversation menu */ | |
| 4596 | 2798 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2799 |
| 4596 | 2800 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, |
| 4359 | 2801 "<StockItem>", GTK_STOCK_SAVE_AS }, |
| 5167 | 2802 { N_("/Conversation/View _Log..."), NULL, menu_view_log_cb, 0, NULL }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2803 |
| 4359 | 2804 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2805 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
2806 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
|
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
2807 0, NULL }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2808 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2809 "<StockItem>", GAIM_STOCK_EDIT }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2810 { N_("/Conversation/_Get Info..."), NULL, menu_get_info_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2811 "<StockItem>", GAIM_STOCK_INFO }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2812 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2813 "<StockItem>", GAIM_STOCK_INVITE }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2814 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
2815 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2816 |
| 4596 | 2817 { N_("/Conversation/Insert _URL..."), NULL, menu_insert_link_cb, 0, |
| 4359 | 2818 "<StockItem>", GAIM_STOCK_LINK }, |
| 4596 | 2819 { N_("/Conversation/Insert _Image..."), NULL, menu_insert_image_cb, 0, |
| 4359 | 2820 "<StockItem>", GAIM_STOCK_IMAGE }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2821 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
2822 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2823 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2824 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2825 "<StockItem>", GAIM_STOCK_WARN }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2826 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2827 "<StockItem>", GAIM_STOCK_BLOCK }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2828 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2829 "<StockItem>", GTK_STOCK_ADD }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2830 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2831 "<StockItem>", GTK_STOCK_REMOVE }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2832 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2833 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2834 |
| 4596 | 2835 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, |
| 4359 | 2836 "<StockItem>", GTK_STOCK_CLOSE }, |
| 2837 | |
| 2838 /* Options */ | |
| 4596 | 2839 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, |
| 2840 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, | |
| 2841 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, | |
| 4359 | 2842 }; |
| 2843 | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
2844 static const int menu_item_count = |
| 4359 | 2845 sizeof(menu_items) / sizeof(*menu_items); |
| 2846 | |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2847 static char * |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2848 item_factory_translate_func (const char *path, gpointer func_data) |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2849 { |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2850 return _(path); |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2851 } |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2852 |
| 4359 | 2853 static GtkWidget * |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2854 setup_menubar(GaimWindow *win) |
| 4359 | 2855 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2856 GaimGtkWindow *gtkwin; |
| 5116 | 2857 GtkAccelGroup *accel_group; |
| 4359 | 2858 gtkwin = GAIM_GTK_WINDOW(win); |
| 2859 | |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
2860 accel_group = gtk_accel_group_new (); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
2861 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
2862 g_object_unref (accel_group); |
| 5116 | 2863 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2864 gtkwin->menu.item_factory = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2865 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2866 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2867 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2868 item_factory_translate_func, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2869 NULL, NULL); |
| 4630 | 2870 |
| 2871 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count, | |
| 4359 | 2872 menu_items, win); |
| 2873 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2874 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2875 gtkwin->menu.menubar = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2876 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2877 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2878 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2879 gtkwin->menu.view_log = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2880 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2881 N_("/Conversation/View Log...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2882 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2883 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2884 gtkwin->menu.add_pounce = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2885 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2886 N_("/Conversation/Add Buddy Pounce...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2887 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2888 gtkwin->menu.alias = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2889 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2890 N_("/Conversation/Alias...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2891 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2892 gtkwin->menu.get_info = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2893 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2894 N_("/Conversation/Get Info...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2895 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2896 gtkwin->menu.invite = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2897 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2898 N_("/Conversation/Invite...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2899 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2900 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2901 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2902 gtkwin->menu.insert_link = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2903 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2904 N_("/Conversation/Insert URL...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2905 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2906 gtkwin->menu.insert_image = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2907 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2908 N_("/Conversation/Insert Image...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2909 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2910 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2911 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2912 gtkwin->menu.warn = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2913 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2914 N_("/Conversation/Warn...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2915 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2916 gtkwin->menu.block = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2917 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2918 N_("/Conversation/Block...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2919 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2920 gtkwin->menu.add = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2921 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2922 N_("/Conversation/Add...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2923 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2924 gtkwin->menu.remove = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2925 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2926 N_("/Conversation/Remove...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2927 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2928 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2929 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2930 gtkwin->menu.logging = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2931 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2932 N_("/Options/Enable Logging")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2933 gtkwin->menu.sounds = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2934 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2935 N_("/Options/Enable Sounds")); |
| 4359 | 2936 |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2937 generate_send_as_items(win, NULL); |
| 4359 | 2938 |
| 2939 gtk_widget_show(gtkwin->menu.menubar); | |
| 4931 | 2940 |
| 2941 return gtkwin->menu.menubar; | |
| 4359 | 2942 } |
| 2943 | |
| 2944 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2945 setup_im_buttons(GaimConversation *conv, GtkWidget *parent) |
| 4359 | 2946 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2947 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2948 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2949 GaimGtkImPane *gtkim; |
| 4359 | 2950 GaimConversationType type = GAIM_CONV_IM; |
| 2951 | |
| 2952 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2953 gtkim = gtkconv->u.im; | |
| 2954 gc = gaim_conversation_get_gc(conv); | |
| 2955 | |
| 2956 /* From right to left... */ | |
| 2957 | |
| 2958 /* Send button */ | |
| 2959 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
| 2960 GAIM_STOCK_SEND, type); | |
| 2961 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); | |
| 2962 | |
| 2963 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
| 2964 | |
| 2965 /* Separator */ | |
| 2966 if (gtkim->sep2 != NULL) | |
| 2967 gtk_widget_destroy(gtkim->sep2); | |
| 2968 | |
| 2969 gtkim->sep2 = gtk_vseparator_new(); | |
| 2970 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0); | |
| 2971 gtk_widget_show(gtkim->sep2); | |
| 2972 | |
| 2973 /* Now, um, just kind of all over the place. Huh? */ | |
| 2974 | |
| 2975 /* Add button */ | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2976 if (gaim_find_buddy(gaim_conversation_get_account(conv), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2977 gaim_conversation_get_name(conv)) == NULL) { |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2978 |
| 4359 | 2979 gtkim->add = gaim_gtk_change_text(_("Add"), gtkim->add, |
| 2980 GTK_STOCK_ADD, type); | |
| 2981 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->add, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
2982 _("Add the user to your buddy list"), NULL); |
| 4359 | 2983 } |
| 2984 else { | |
| 2985 gtkim->add = gaim_gtk_change_text(_("Remove"), gtkim->add, | |
| 2986 GTK_STOCK_REMOVE, type); | |
| 2987 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->add, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
2988 _("Remove the user from your buddy list"), NULL); |
| 4359 | 2989 } |
| 2990 | |
| 2991 gtk_box_pack_start(GTK_BOX(parent), gtkim->add, | |
| 2992 FALSE, FALSE, 0); | |
| 2993 | |
| 2994 /* Warn button */ | |
| 2995 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn, | |
| 2996 GAIM_STOCK_WARN, type); | |
| 2997 gtk_box_pack_start(GTK_BOX(parent), gtkim->warn, FALSE, FALSE, 0); | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
2998 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn, |
|
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
2999 _("Warn the user"), NULL); |
| 4359 | 3000 |
| 3001 /* Info button */ | |
| 3002 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info, | |
| 3003 GAIM_STOCK_INFO, type); | |
| 3004 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0); | |
| 3005 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3006 _("Get the user's information"), NULL); |
| 4359 | 3007 |
| 3008 /* Block button */ | |
| 3009 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block, | |
| 3010 GAIM_STOCK_BLOCK, type); | |
| 3011 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0); | |
| 3012 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3013 _("Block the user"), NULL); |
| 4359 | 3014 |
| 3015 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE); | |
| 3016 gtk_button_set_relief(GTK_BUTTON(gtkim->add), GTK_RELIEF_NONE); | |
| 3017 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE); | |
| 3018 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); | |
| 3019 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE); | |
| 3020 | |
| 3021 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info); | |
| 3022 gtk_size_group_add_widget(gtkconv->sg, gtkim->add); | |
| 3023 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn); | |
| 3024 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); | |
| 3025 gtk_size_group_add_widget(gtkconv->sg, gtkim->block); | |
| 3026 | |
| 3027 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1); | |
| 3028 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2); | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3029 gtk_box_reorder_child(GTK_BOX(parent), gtkim->add, 3); |
| 4359 | 3030 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 4); |
| 3031 | |
| 3032 gaim_gtkconv_update_buttons_by_protocol(conv); | |
| 3033 | |
| 3034 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", | |
| 3035 G_CALLBACK(send_cb), conv); | |
| 3036 g_signal_connect(G_OBJECT(gtkconv->info), "clicked", | |
| 3037 G_CALLBACK(info_cb), conv); | |
| 3038 g_signal_connect(G_OBJECT(gtkim->warn), "clicked", | |
| 3039 G_CALLBACK(warn_cb), conv); | |
| 3040 g_signal_connect(G_OBJECT(gtkim->block), "clicked", | |
| 3041 G_CALLBACK(block_cb), conv); | |
| 3042 } | |
| 3043 | |
| 3044 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3045 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent) |
| 4359 | 3046 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3047 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3048 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3049 GaimGtkChatPane *gtkchat; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3050 GaimGtkWindow *gtkwin; |
| 4359 | 3051 GtkWidget *sep; |
| 3052 | |
| 3053 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3054 gtkchat = gtkconv->u.chat; | |
| 3055 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); | |
| 3056 gc = gaim_conversation_get_gc(conv); | |
| 3057 | |
| 3058 /* Send button */ | |
| 3059 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
| 3060 GAIM_STOCK_SEND, GAIM_CONV_CHAT); | |
| 3061 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); | |
| 3062 | |
| 3063 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
| 3064 | |
| 3065 /* Separator */ | |
| 3066 sep = gtk_vseparator_new(); | |
| 3067 gtk_box_pack_end(GTK_BOX(parent), sep, FALSE, TRUE, 0); | |
| 3068 gtk_widget_show(sep); | |
| 3069 | |
| 3070 /* Invite */ | |
| 3071 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite, | |
| 3072 GAIM_STOCK_INVITE, GAIM_CONV_CHAT); | |
| 3073 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite, | |
| 3074 _("Invite a user"), NULL); | |
| 3075 gtk_box_pack_end(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0); | |
| 3076 | |
| 3077 /* Set the relief on these. */ | |
| 3078 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE); | |
| 3079 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); | |
| 3080 | |
| 3081 /* Callbacks */ | |
| 3082 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", | |
| 3083 G_CALLBACK(send_cb), conv); | |
| 3084 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked", | |
| 3085 G_CALLBACK(invite_cb), conv); | |
| 3086 } | |
| 3087 | |
| 3088 static GtkWidget * | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3089 build_conv_toolbar(GaimConversation *conv) |
| 4359 | 3090 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3091 GaimGtkConversation *gtkconv; |
| 4359 | 3092 GtkWidget *vbox; |
| 3093 GtkWidget *hbox; | |
| 3094 GtkWidget *button; | |
| 3095 GtkWidget *sep; | |
| 3096 GtkSizeGroup *sg; | |
| 3097 | |
| 3098 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3099 | |
| 3100 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); | |
| 3101 | |
| 3102 vbox = gtk_vbox_new(FALSE, 0); | |
| 3103 sep = gtk_hseparator_new(); | |
| 3104 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); | |
| 3105 | |
| 3106 hbox = gtk_hbox_new(FALSE, 5); | |
| 3107 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
| 3108 | |
| 3109 /* Bold */ | |
| 3110 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD); | |
| 3111 gtk_size_group_add_widget(sg, button); | |
| 3112 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3113 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Bold"), NULL); | |
| 3114 | |
| 3115 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3116 G_CALLBACK(do_bold), gtkconv); | |
| 3117 | |
| 3118 gtkconv->toolbar.bold = button; | |
| 3119 | |
| 3120 /* Italic */ | |
| 3121 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC); | |
| 3122 gtk_size_group_add_widget(sg, button); | |
| 3123 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3124 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Italic"), NULL); | |
| 3125 | |
| 3126 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3127 G_CALLBACK(do_italic), gtkconv); | |
| 3128 | |
| 3129 gtkconv->toolbar.italic = button; | |
| 3130 | |
| 3131 /* Underline */ | |
| 3132 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE); | |
| 3133 gtk_size_group_add_widget(sg, button); | |
| 3134 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3135 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Underline"), NULL); | |
| 3136 | |
| 3137 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3138 G_CALLBACK(do_underline), gtkconv); | |
| 3139 | |
| 3140 gtkconv->toolbar.underline = button; | |
| 3141 | |
| 3142 /* Sep */ | |
| 3143 sep = gtk_vseparator_new(); | |
| 3144 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
| 3145 | |
| 3146 /* Increase font size */ | |
| 3147 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_BIGGER); | |
| 3148 gtk_size_group_add_widget(sg, button); | |
| 3149 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3150 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3151 _("Larger font size"), NULL); | |
| 3152 | |
| 3153 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3154 G_CALLBACK(do_big), gtkconv); | |
| 3155 | |
| 5049 | 3156 gtkconv->toolbar.larger_size = button; |
| 3157 | |
| 4359 | 3158 /* Normal font size */ |
| 3159 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_NORMAL); | |
| 3160 gtk_size_group_add_widget(sg, button); | |
| 3161 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3162 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3163 _("Normal font size"), NULL); | |
| 3164 | |
| 3165 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3166 G_CALLBACK(do_normal), gtkconv); | |
| 3167 | |
| 3168 gtkconv->toolbar.normal_size = button; | |
| 3169 | |
| 3170 /* Decrease font size */ | |
| 3171 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_SMALLER); | |
| 3172 gtk_size_group_add_widget(sg, button); | |
| 3173 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3174 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3175 _("Smaller font size"), NULL); | |
| 3176 | |
| 3177 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3178 G_CALLBACK(do_small), gtkconv); | |
| 3179 | |
| 5049 | 3180 gtkconv->toolbar.smaller_size = button; |
| 3181 | |
| 4359 | 3182 /* Sep */ |
| 3183 sep = gtk_vseparator_new(); | |
| 3184 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
| 3185 | |
| 4685 | 3186 /* Font Face */ |
| 3187 | |
| 3188 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_SELECT_FONT); | |
| 3189 gtk_size_group_add_widget(sg, button); | |
| 3190 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3191 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3192 _("Font Face"), NULL); | |
| 3193 | |
| 3194 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3195 G_CALLBACK(toggle_font), conv); | |
| 3196 | |
| 3197 gtkconv->toolbar.font = button; | |
| 3198 | |
| 4359 | 3199 /* Foreground Color */ |
| 3200 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_FGCOLOR); | |
| 3201 gtk_size_group_add_widget(sg, button); | |
| 3202 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3203 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3204 _("Foreground font color"), NULL); | |
| 3205 | |
| 3206 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3207 G_CALLBACK(toggle_fg_color), conv); | |
| 3208 | |
| 3209 gtkconv->toolbar.fgcolor = button; | |
| 3210 | |
| 3211 /* Background Color */ | |
| 3212 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_BGCOLOR); | |
| 3213 gtk_size_group_add_widget(sg, button); | |
| 3214 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3215 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3216 _("Background color"), NULL); | |
| 3217 | |
| 3218 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3219 G_CALLBACK(toggle_bg_color), conv); | |
| 3220 | |
| 3221 gtkconv->toolbar.bgcolor = button; | |
| 3222 | |
| 3223 /* Sep */ | |
| 3224 sep = gtk_vseparator_new(); | |
| 3225 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
| 3226 | |
| 3227 /* Insert IM Image */ | |
| 3228 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_IMAGE); | |
| 3229 gtk_size_group_add_widget(sg, button); | |
| 3230 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3231 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert image"), NULL); | |
| 3232 | |
| 3233 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3234 G_CALLBACK(insert_image_cb), conv); | |
| 3235 | |
| 3236 gtkconv->toolbar.image = button; | |
| 3237 | |
| 3238 /* Insert Link */ | |
| 3239 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_LINK); | |
| 3240 gtk_size_group_add_widget(sg, button); | |
| 3241 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3242 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert link"), NULL); | |
| 3243 | |
| 3244 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3245 G_CALLBACK(insert_link_cb), conv); | |
| 3246 | |
| 3247 gtkconv->toolbar.link = button; | |
| 3248 | |
| 3249 /* Insert Smiley */ | |
| 3250 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_SMILEY); | |
| 3251 gtk_size_group_add_widget(sg, button); | |
| 3252 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3253 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert smiley"), NULL); | |
| 3254 | |
| 3255 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3256 G_CALLBACK(insert_smiley_cb), conv); | |
| 3257 | |
| 3258 gtkconv->toolbar.smiley = button; | |
| 3259 | |
| 3260 | |
| 3261 sep = gtk_hseparator_new(); | |
| 3262 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); | |
| 3263 | |
| 3264 gtk_widget_show_all(vbox); | |
| 3265 | |
| 3266 return vbox; | |
| 3267 } | |
| 3268 | |
| 3269 static GtkWidget * | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3270 setup_chat_pane(GaimConversation *conv) |
| 4359 | 3271 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3272 GaimPluginProtocolInfo *prpl_info = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3273 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3274 GaimGtkChatPane *gtkchat; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3275 GaimConnection *gc; |
| 4359 | 3276 GtkWidget *vpaned, *hpaned; |
| 3277 GtkWidget *vbox, *hbox; | |
| 3278 GtkWidget *lbox, *bbox; | |
| 3279 GtkWidget *label; | |
| 3280 GtkWidget *sw2; | |
| 3281 GtkWidget *list; | |
| 3282 GtkWidget *button; | |
| 3283 GtkWidget *frame; | |
| 3284 GtkListStore *ls; | |
| 3285 GtkCellRenderer *rend; | |
| 3286 GtkTreeViewColumn *col; | |
| 3287 | |
| 3288 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3289 gtkchat = gtkconv->u.chat; | |
| 3290 gc = gaim_conversation_get_gc(conv); | |
| 3291 | |
| 3292 /* Setup the outer pane. */ | |
| 3293 vpaned = gtk_vpaned_new(); | |
| 3294 gtk_widget_show(vpaned); | |
| 3295 | |
| 3296 /* Setup the top part of the pane. */ | |
| 3297 vbox = gtk_vbox_new(FALSE, 5); | |
| 3298 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE); | |
| 3299 gtk_widget_show(vbox); | |
| 3300 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3301 if (gc != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3302 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3303 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3304 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC) |
| 4359 | 3305 { |
| 3306 hbox = gtk_hbox_new(FALSE, 0); | |
| 3307 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); | |
| 3308 gtk_widget_show(hbox); | |
| 3309 | |
| 3310 label = gtk_label_new(_("Topic:")); | |
| 3311 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | |
| 3312 gtk_widget_show(label); | |
| 3313 | |
| 3314 gtkchat->topic_text = gtk_entry_new(); | |
| 4635 | 3315 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE); |
| 4359 | 3316 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 5); |
| 3317 gtk_widget_show(gtkchat->topic_text); | |
| 3318 } | |
| 3319 | |
| 3320 /* Setup the horizontal pane. */ | |
| 3321 hpaned = gtk_hpaned_new(); | |
| 3322 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 5); | |
| 3323 gtk_widget_show(hpaned); | |
| 3324 | |
| 3325 /* Setup the scrolled window to put gtkimhtml in. */ | |
| 3326 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
| 3327 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 3328 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); | |
| 3329 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 3330 GTK_SHADOW_IN); | |
| 3331 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE); | |
| 3332 | |
| 3333 gtk_widget_set_size_request(gtkconv->sw, | |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3334 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3335 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3336 |
| 4359 | 3337 gtk_widget_show(gtkconv->sw); |
| 3338 | |
| 3339 /* Setup gtkihmtml. */ | |
| 3340 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
| 3341 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
| 3342 | |
| 3343 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3344 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 4359 | 3345 |
| 3346 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 3347 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 6057 | 3348 g_signal_connect(G_OBJECT(gtkconv->imhtml), "button_release_event", |
| 3349 G_CALLBACK(refocus_entry_cb), gtkconv); | |
| 4359 | 3350 |
| 3351 gaim_setup_imhtml(gtkconv->imhtml); | |
| 3352 | |
| 3353 gtk_widget_show(gtkconv->imhtml); | |
| 3354 | |
| 3355 /* Build the right pane. */ | |
| 3356 lbox = gtk_vbox_new(FALSE, 5); | |
|
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3357 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); |
| 4359 | 3358 gtk_widget_show(lbox); |
| 3359 | |
| 3360 /* Setup the label telling how many people are in the room. */ | |
| 3361 gtkchat->count = gtk_label_new(_("0 people in room")); | |
| 3362 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0); | |
| 3363 gtk_widget_show(gtkchat->count); | |
| 3364 | |
| 3365 /* Setup the list of users. */ | |
| 3366 sw2 = gtk_scrolled_window_new(NULL, NULL); | |
| 3367 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2), | |
| 3368 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
| 3369 gtk_box_pack_start(GTK_BOX(lbox), sw2, TRUE, TRUE, 0); | |
| 3370 gtk_widget_show(sw2); | |
| 3371 | |
| 3372 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
| 3373 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
| 3374 GTK_SORT_ASCENDING); | |
| 3375 | |
| 3376 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls)); | |
| 3377 | |
| 3378 rend = gtk_cell_renderer_text_new(); | |
| 3379 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 3380 "text", 0, NULL); | |
| 3381 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
| 3382 | |
| 3383 g_signal_connect(G_OBJECT(list), "button_press_event", | |
| 3384 G_CALLBACK(right_click_chat_cb), conv); | |
| 3385 | |
| 3386 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3387 | |
| 3388 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 3389 "text", 1, NULL); | |
| 3390 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
| 3391 | |
| 3392 #if 0 | |
| 3393 g_signal_connect(G_OBJECT(list), "button_press_event", | |
| 3394 G_CALLBACK(right_click_chat), conv); | |
| 3395 #endif | |
| 3396 | |
| 3397 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3398 | |
| 3399 gtk_widget_set_size_request(list, 150, -1); | |
| 3400 | |
| 3401 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE); | |
| 3402 gtk_widget_show(list); | |
| 3403 | |
| 3404 gtkchat->list = list; | |
| 3405 | |
| 3406 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), list); | |
| 3407 | |
| 3408 /* Setup the user list toolbar. */ | |
| 3409 bbox = gtk_hbox_new(TRUE, 5); | |
| 3410 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0); | |
| 3411 gtk_widget_show(bbox); | |
| 3412 | |
| 3413 /* IM */ | |
| 3414 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO, | |
| 3415 GAIM_BUTTON_VERTICAL); | |
| 3416 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3417 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
|
3418 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL); |
| 4359 | 3419 g_signal_connect(G_OBJECT(button), "clicked", |
| 3420 G_CALLBACK(im_cb), conv); | |
| 3421 | |
| 3422 gtk_widget_show(button); | |
| 3423 | |
| 3424 /* Ignore */ | |
| 3425 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE, | |
| 3426 GAIM_BUTTON_VERTICAL); | |
| 3427 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3428 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
|
3429 gtk_tooltips_set_tip(gtkconv->tooltips, button, |
|
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3430 _("Ignore the user"), NULL); |
| 4359 | 3431 g_signal_connect(G_OBJECT(button), "clicked", |
| 3432 G_CALLBACK(ignore_cb), conv); | |
| 3433 gtk_widget_show(button); | |
| 3434 | |
| 3435 /* Info */ | |
| 3436 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO, | |
| 3437 GAIM_BUTTON_VERTICAL); | |
| 3438 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3439 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 3440 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3441 _("Get the user's information"), NULL); |
| 4359 | 3442 g_signal_connect(G_OBJECT(button), "clicked", |
| 3443 G_CALLBACK(info_cb), conv); | |
| 3444 | |
| 3445 gtk_widget_show(button); | |
| 3446 | |
| 3447 gtkconv->info = button; | |
| 3448 | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3449 /* Build the toolbar. */ |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3450 vbox = gtk_vbox_new(FALSE, 5); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3451 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3452 gtk_widget_show(vbox); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3453 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3454 gtkconv->toolbar.toolbar = build_conv_toolbar(conv); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3455 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar.toolbar, |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3456 FALSE, FALSE, 0); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3457 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3458 /* Setup the entry widget. */ |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3459 frame = gtk_frame_new(NULL); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3460 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3461 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3462 gtk_widget_show(frame); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3463 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3464 gtkconv->entry_buffer = gtk_text_buffer_new(NULL); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3465 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3466 gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3467 |
| 5105 | 3468 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3469 gtk_widget_set_size_request(gtkconv->entry, -1, |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3470 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3471 25)); |
| 4359 | 3472 |
| 3473 /* Connect the signal handlers. */ | |
| 3474 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event", | |
| 3475 G_CALLBACK(entry_key_pressed_cb_1), | |
| 3476 gtkconv->entry_buffer); | |
| 3477 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", | |
| 3478 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 3479 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | |
| 3480 G_CALLBACK(entry_key_pressed_cb_2), conv); | |
| 3481 | |
| 3482 #ifdef USE_GTKSPELL | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3483 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
| 4359 | 3484 gtkspell_new_attach(GTK_TEXT_VIEW(gtkconv->entry), NULL, NULL); |
| 3485 #endif | |
| 3486 | |
| 3487 gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(gtkconv->entry)); | |
| 3488 gtk_widget_show(gtkconv->entry); | |
| 3489 | |
| 3490 /* Setup the bottom button box. */ | |
| 3491 gtkconv->bbox = gtk_hbox_new(FALSE, 5); | |
| 3492 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0); | |
| 3493 gtk_widget_show(gtkconv->bbox); | |
| 3494 | |
| 3495 setup_chat_buttons(conv, gtkconv->bbox); | |
| 3496 | |
| 3497 return vpaned; | |
| 3498 } | |
| 3499 | |
| 3500 static GtkWidget * | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3501 setup_im_pane(GaimConversation *conv) |
| 4359 | 3502 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3503 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3504 GaimGtkImPane *gtkim; |
| 4359 | 3505 GtkWidget *paned; |
| 3506 GtkWidget *vbox; | |
| 3507 GtkWidget *vbox2; | |
| 3508 GtkWidget *frame; | |
| 3509 | |
| 3510 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3511 gtkim = gtkconv->u.im; | |
| 3512 | |
| 3513 /* Setup the outer pane. */ | |
| 3514 paned = gtk_vpaned_new(); | |
| 3515 gtk_widget_show(paned); | |
| 3516 | |
| 3517 /* Setup the top part of the pane. */ | |
| 3518 vbox = gtk_vbox_new(FALSE, 5); | |
|
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3519 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
| 4359 | 3520 gtk_widget_show(vbox); |
| 3521 | |
| 3522 /* Setup the gtkimhtml widget. */ | |
| 3523 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
| 3524 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 3525 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); | |
| 3526 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 3527 GTK_SHADOW_IN); | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3528 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0); |
| 4851 | 3529 |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3530 gtk_widget_set_size_request(gtkconv->sw, |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3531 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3532 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); |
| 4359 | 3533 gtk_widget_show(gtkconv->sw); |
| 3534 | |
| 3535 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
| 3536 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
| 3537 | |
| 3538 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 3539 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 6057 | 3540 g_signal_connect(G_OBJECT(gtkconv->imhtml), "button_release_event", |
| 3541 G_CALLBACK(refocus_entry_cb), gtkconv); | |
| 4359 | 3542 |
| 3543 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3544 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 4359 | 3545 |
| 3546 gaim_setup_imhtml(gtkconv->imhtml); | |
| 3547 | |
| 3548 gtk_widget_show(gtkconv->imhtml); | |
| 3549 | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3550 vbox2 = gtk_vbox_new(FALSE, 5); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3551 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3552 gtk_widget_show(vbox2); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3553 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3554 /* Build the toolbar. */ |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3555 gtkconv->toolbar.toolbar = build_conv_toolbar(conv); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3556 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar.toolbar, |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3557 FALSE, FALSE, 0); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3558 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3559 /* Setup the entry widget. */ |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3560 frame = gtk_frame_new(NULL); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3561 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3562 gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3563 gtk_widget_show(frame); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3564 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3565 gtkconv->entry_buffer = gtk_text_buffer_new(NULL); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3566 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3567 gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3568 |
| 5105 | 3569 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3570 gtk_widget_set_size_request(gtkconv->entry, -1, |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3571 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3572 25)); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3573 |
| 4359 | 3574 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event", |
| 3575 G_CALLBACK(entry_key_pressed_cb_1), | |
| 3576 gtkconv->entry_buffer); | |
| 3577 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | |
| 3578 G_CALLBACK(entry_key_pressed_cb_2), conv); | |
| 3579 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", | |
| 3580 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 3581 | |
| 3582 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", | |
| 3583 G_CALLBACK(insert_text_cb), conv); | |
| 3584 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", | |
| 3585 G_CALLBACK(delete_text_cb), conv); | |
| 3586 | |
| 3587 #ifdef USE_GTKSPELL | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3588 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
| 4359 | 3589 gtkspell_new_attach(GTK_TEXT_VIEW(gtkconv->entry), NULL, NULL); |
| 3590 #endif | |
| 3591 | |
| 3592 gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(gtkconv->entry)); | |
| 3593 gtk_widget_show(gtkconv->entry); | |
| 3594 | |
| 3595 gtkconv->bbox = gtk_hbox_new(FALSE, 5); | |
| 3596 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0); | |
| 3597 gtk_widget_show(gtkconv->bbox); | |
| 3598 | |
| 3599 setup_im_buttons(conv, gtkconv->bbox); | |
| 3600 | |
| 3601 return paned; | |
| 3602 } | |
| 3603 | |
| 3604 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3605 move_next_tab(GaimConversation *conv) |
| 4359 | 3606 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3607 GaimConversation *next_conv = NULL; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3608 GaimWindow *win; |
| 4359 | 3609 GList *l; |
| 3610 int index, i; | |
| 3611 | |
| 3612 win = gaim_conversation_get_window(conv); | |
| 3613 index = gaim_conversation_get_index(conv); | |
| 3614 | |
| 3615 /* First check the tabs after this position. */ | |
| 3616 for (l = g_list_nth(gaim_window_get_conversations(win), index); | |
| 3617 l != NULL; | |
| 3618 l = l->next) { | |
| 3619 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3620 next_conv = (GaimConversation *)l->data; |
| 4359 | 3621 |
| 3622 if (gaim_conversation_get_unseen(next_conv) > 0) | |
| 3623 break; | |
| 3624 | |
| 3625 next_conv = NULL; | |
| 3626 } | |
| 3627 | |
| 3628 if (next_conv == NULL) { | |
| 3629 | |
| 3630 /* Now check before this position. */ | |
| 3631 for (l = gaim_window_get_conversations(win), i = 0; | |
| 3632 l != NULL && i < index; | |
| 3633 l = l->next) { | |
| 3634 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3635 next_conv = (GaimConversation *)l->data; |
| 4359 | 3636 |
| 3637 if (gaim_conversation_get_unseen(next_conv) > 0) | |
| 3638 break; | |
| 3639 | |
| 3640 next_conv = NULL; | |
| 3641 } | |
| 3642 | |
| 3643 if (next_conv == NULL) { | |
| 3644 /* Okay, just grab the next conversation tab. */ | |
| 3645 if (index == gaim_window_get_conversation_count(win) - 1) | |
| 3646 next_conv = gaim_window_get_conversation_at(win, 0); | |
| 3647 else | |
| 3648 next_conv = gaim_window_get_conversation_at(win, index + 1); | |
| 3649 } | |
| 3650 } | |
| 3651 | |
| 3652 if (next_conv != NULL && next_conv != conv) { | |
| 3653 gaim_window_switch_conversation(win, | |
| 3654 gaim_conversation_get_index(next_conv)); | |
| 3655 } | |
| 3656 } | |
| 3657 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3658 static void |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3659 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
|
3660 GtkSelectionData *sd, guint info, guint t, |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3661 GaimConversation *conv) |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3662 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3663 GaimWindow *win = conv->window; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3664 GaimConversation *c; |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3665 |
|
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3666 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) { |
| 4781 | 3667 GaimBlistNode *n = NULL; |
| 6695 | 3668 GaimBuddy *b; |
| 4781 | 3669 memcpy(&n, sd->data, sizeof(n)); |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3670 |
| 6695 | 3671 if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
| 3672 b = gaim_contact_get_priority_buddy((GaimContact*)n); | |
| 3673 else if (GAIM_BLIST_NODE_IS_BUDDY(n)) | |
| 3674 b = (GaimBuddy*)n; | |
| 3675 else | |
| 4781 | 3676 return; |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3677 |
|
7089
2cd3756a637b
[gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
3678 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
|
3679 |
|
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3680 gaim_window_add_conversation(win, c); |
| 4702 | 3681 } |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3682 } |
| 4359 | 3683 |
| 3684 /************************************************************************** | |
| 3685 * GTK+ window ops | |
| 3686 **************************************************************************/ | |
| 3687 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3688 gaim_gtk_new_window(GaimWindow *win) |
| 4359 | 3689 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3690 GaimGtkWindow *gtkwin; |
| 4359 | 3691 GtkPositionType pos; |
| 3692 GtkWidget *testidea; | |
| 3693 GtkWidget *menubar; | |
| 3694 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3695 gtkwin = g_malloc0(sizeof(GaimGtkWindow)); |
| 4359 | 3696 |
| 3697 win->ui_data = gtkwin; | |
| 3698 | |
| 3699 /* Create the window. */ | |
| 3700 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 3701 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation"); | |
| 4635 | 3702 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE); |
|
4510
4c394222c732
[gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents:
4505
diff
changeset
|
3703 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0); |
| 5173 | 3704 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE; |
| 4359 | 3705 gtk_widget_realize(gtkwin->window); |
| 3706 | |
| 3707 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event", | |
| 3708 G_CALLBACK(close_win_cb), win); | |
| 3709 | |
| 3710 /* Create the notebook. */ | |
| 3711 gtkwin->notebook = gtk_notebook_new(); | |
| 3712 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3713 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side"); |
| 4359 | 3714 |
| 3715 #if 0 | |
| 3716 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
| 3717 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
| 3718 #endif | |
| 3719 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); | |
| 3720 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE); | |
| 3721 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook)); | |
| 4818 | 3722 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE); |
| 3723 | |
| 4359 | 3724 gtk_widget_show(gtkwin->notebook); |
| 3725 | |
| 3726 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page", | |
| 3727 G_CALLBACK(switch_conv_cb), win); | |
| 3728 | |
| 3729 /* Setup the tab drag and drop signals. */ | |
| 4486 | 3730 gtk_widget_add_events(gtkwin->notebook, |
| 3731 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); | |
| 3732 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event", | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3733 G_CALLBACK(notebook_press_cb), win); |
| 4486 | 3734 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event", |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3735 G_CALLBACK(notebook_release_cb), win); |
|
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3736 |
| 4359 | 3737 testidea = gtk_vbox_new(FALSE, 0); |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3738 |
| 4359 | 3739 /* Setup the menubar. */ |
| 3740 menubar = setup_menubar(win); | |
| 3741 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0); | |
| 3742 | |
| 3743 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0); | |
| 3744 | |
| 3745 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea); | |
| 3746 | |
| 3747 gtk_widget_show(testidea); | |
| 3748 } | |
| 3749 | |
| 3750 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3751 gaim_gtk_destroy_window(GaimWindow *win) |
| 4359 | 3752 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3753 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3754 |
| 3755 gtk_widget_destroy(gtkwin->window); | |
| 3756 | |
| 4630 | 3757 g_object_unref(G_OBJECT(gtkwin->menu.item_factory)); |
| 3758 | |
| 4359 | 3759 g_free(gtkwin); |
| 3760 win->ui_data = NULL; | |
| 3761 } | |
| 3762 | |
| 3763 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3764 gaim_gtk_show(GaimWindow *win) |
| 4359 | 3765 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3766 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3767 |
| 3768 gtk_widget_show(gtkwin->window); | |
| 3769 } | |
| 3770 | |
| 3771 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3772 gaim_gtk_hide(GaimWindow *win) |
| 4359 | 3773 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3774 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3775 |
| 3776 gtk_widget_hide(gtkwin->window); | |
| 3777 } | |
| 3778 | |
| 3779 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3780 gaim_gtk_raise(GaimWindow *win) |
| 4359 | 3781 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3782 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3783 |
| 5484 | 3784 gtk_widget_show(gtkwin->window); |
| 5103 | 3785 gtk_window_deiconify(GTK_WINDOW(gtkwin->window)); |
| 4526 | 3786 gdk_window_raise(gtkwin->window->window); |
| 4359 | 3787 } |
| 3788 | |
| 3789 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3790 gaim_gtk_flash(GaimWindow *win) |
| 4359 | 3791 { |
| 3792 #ifdef _WIN32 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3793 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3794 |
| 3795 wgaim_im_blink(gtkwin->window); | |
| 3796 #endif | |
| 3797 } | |
| 3798 | |
| 3799 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3800 gaim_gtk_switch_conversation(GaimWindow *win, unsigned int index) |
| 4359 | 3801 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3802 GaimGtkWindow *gtkwin; |
| 4359 | 3803 |
| 3804 gtkwin = GAIM_GTK_WINDOW(win); | |
| 3805 | |
| 3806 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
| 3807 } | |
| 3808 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3809 static const GtkTargetEntry te[] = |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3810 { |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3811 {"text/plain", 0, 0}, |
| 4702 | 3812 {"text/uri-list", 0, 1}, |
| 4781 | 3813 {"GAIM_BLIST_NODE", 0, 2}, |
| 4702 | 3814 {"STRING", 0, 3} |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3815 }; |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3816 |
| 4359 | 3817 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3818 gaim_gtk_add_conversation(GaimWindow *win, GaimConversation *conv) |
| 4359 | 3819 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3820 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3821 GaimGtkConversation *gtkconv, *focus_gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3822 GaimConversation *focus_conv; |
| 4359 | 3823 GtkWidget *pane = NULL; |
| 3824 GtkWidget *tab_cont; | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3825 GtkWidget *tabby, *menu_tabby; |
| 4359 | 3826 gboolean new_ui; |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3827 GaimConversationType conv_type; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3828 const char *name; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3829 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3830 name = gaim_conversation_get_name(conv); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3831 conv_type = gaim_conversation_get_type(conv); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3832 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3833 |
| 3834 if (conv->ui_data != NULL) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3835 gtkconv = (GaimGtkConversation *)conv->ui_data; |
| 4359 | 3836 |
| 3837 tab_cont = gtkconv->tab_cont; | |
| 3838 | |
| 3839 new_ui = FALSE; | |
| 3840 } | |
| 3841 else { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3842 gtkconv = g_malloc0(sizeof(GaimGtkConversation)); |
| 4359 | 3843 conv->ui_data = gtkconv; |
| 3844 | |
| 3845 /* Setup some initial variables. */ | |
| 3846 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
| 3847 gtkconv->tooltips = gtk_tooltips_new(); | |
| 3848 | |
| 4421 | 3849 /* Setup the foreground and background colors */ |
| 3850 gaim_gtkconv_update_font_colors(conv); | |
| 3851 | |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
3852 /* Setup the font face */ |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
3853 gaim_gtkconv_update_font_face(conv); |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
3854 |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3855 if (conv_type == GAIM_CONV_CHAT) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3856 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane)); |
| 4359 | 3857 |
| 3858 pane = setup_chat_pane(conv); | |
| 3859 } | |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3860 else if (conv_type == GAIM_CONV_IM) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3861 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane)); |
| 4359 | 3862 gtkconv->u.im->a_virgin = TRUE; |
| 3863 | |
| 3864 pane = setup_im_pane(conv); | |
| 3865 } | |
| 3866 | |
| 3867 if (pane == NULL) { | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3868 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat); |
|
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3869 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im); |
| 4359 | 3870 |
| 3871 g_free(gtkconv); | |
| 3872 conv->ui_data = NULL; | |
| 3873 | |
| 3874 return; | |
| 3875 } | |
| 3876 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3877 /* Setup drag-and-drop */ |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3878 gtk_drag_dest_set(pane, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3879 GTK_DEST_DEFAULT_MOTION | |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3880 GTK_DEST_DEFAULT_DROP, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3881 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3882 GDK_ACTION_COPY); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3883 gtk_drag_dest_set(gtkconv->imhtml, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3884 GTK_DEST_DEFAULT_MOTION | |
| 4702 | 3885 GTK_DEST_DEFAULT_DROP, |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3886 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3887 GDK_ACTION_DEFAULT | GDK_ACTION_COPY | GDK_ACTION_MOVE); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3888 gtk_drag_dest_set(gtkconv->entry, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3889 GTK_DEST_DEFAULT_MOTION | |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3890 GTK_DEST_DEFAULT_DROP, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3891 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3892 GDK_ACTION_COPY); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3893 |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3894 g_signal_connect(G_OBJECT(pane), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3895 G_CALLBACK(conv_dnd_recv), conv); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3896 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3897 G_CALLBACK(conv_dnd_recv), conv); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3898 #if 0 |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3899 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3900 G_CALLBACK(conv_dnd_recv), conv); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3901 #endif |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3902 |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3903 /* |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3904 * Write the New Conversation log string. |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3905 * |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3906 * This should probably be elsewhere, but then, logging should |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3907 * be moved out in some way, either via plugin or via a new API. |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3908 */ |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3909 if (gaim_conversation_is_logging(conv) && |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3910 conv_type != GAIM_CONV_MISC) { |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3911 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3912 FILE *fd; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3913 char filename[256]; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3914 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3915 g_snprintf(filename, sizeof(filename), "%s%s", name, |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3916 (conv_type == GAIM_CONV_CHAT ? ".chat" : "")); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3917 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3918 fd = open_log_file(filename, (conv_type == GAIM_CONV_CHAT)); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3919 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3920 if (fd) { |
| 6244 | 3921 /* "---- " is a delimiter, see dialogs.c:show_log() */ |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3922 if (!gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3923 fprintf(fd, |
| 6089 | 3924 _("<HR><BR><H3 Align=Center> " |
| 3925 "---- New Conversation @ %s ----</H3><BR>\n"), | |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3926 full_date()); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3927 else |
| 6089 | 3928 fprintf(fd, _("---- New Conversation @ %s ----\n"), |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3929 full_date()); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3930 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3931 fclose(fd); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3932 } |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3933 } |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3934 |
| 4359 | 3935 /* Setup the container for the tab. */ |
| 3936 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 5); | |
| 3937 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 5); | |
| 3938 gtk_container_add(GTK_CONTAINER(tab_cont), pane); | |
| 3939 gtk_widget_show(pane); | |
| 3940 | |
| 3941 new_ui = TRUE; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
3942 |
| 4359 | 3943 gtkconv->make_sound = TRUE; |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
3944 |
|
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
3945 g_signal_connect_swapped(G_OBJECT(pane), "focus", |
|
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
3946 G_CALLBACK(gtk_widget_grab_focus), |
|
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
3947 gtkconv->entry); |
| 4359 | 3948 } |
| 3949 | |
| 3950 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 5); | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3951 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 5); |
| 4359 | 3952 |
| 3953 /* Close button. */ | |
| 3954 gtkconv->close = gtk_button_new(); | |
| 3955 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16); | |
| 3956 gtk_container_add(GTK_CONTAINER(gtkconv->close), | |
| 4445 | 3957 gtk_image_new_from_stock(GTK_STOCK_CLOSE, |
| 3958 GTK_ICON_SIZE_MENU)); | |
| 4359 | 3959 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE); |
| 3960 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3961 _("Close conversation"), NULL); |
| 4359 | 3962 |
| 3963 g_signal_connect(G_OBJECT(gtkconv->close), "clicked", | |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
3964 G_CALLBACK(close_conv_cb), conv); |
| 4359 | 3965 |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
3966 /* Status icon. */ |
| 6440 | 3967 gtkconv->icon = gtk_image_new(); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3968 gtkconv->menu_icon = gtk_image_new(); |
| 6440 | 3969 update_tab_icon(conv); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
3970 |
| 4359 | 3971 /* Tab label. */ |
| 3972 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
|
3973 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); |
| 4359 | 3974 #if 0 |
| 3975 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); | |
| 3976 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); | |
| 3977 #endif | |
| 3978 | |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3979 |
| 4359 | 3980 /* Pack it all together. */ |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
3981 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3982 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, FALSE, FALSE, 0); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3983 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) { |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
3984 gtk_widget_show_all(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3985 gtk_widget_show_all(gtkconv->menu_icon); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3986 } |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
3987 |
| 4359 | 3988 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
|
3989 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); |
| 4445 | 3990 gtk_widget_show(gtkconv->tab_label); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3991 gtk_widget_show(gtkconv->menu_label); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3992 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
|
3993 |
| 4445 | 3994 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
|
3995 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) |
| 4445 | 3996 gtk_widget_show_all(gtkconv->close); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3997 |
| 4445 | 3998 gtk_widget_show(tabby); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3999 gtk_widget_show(menu_tabby); |
| 4359 | 4000 |
| 4001 | |
| 4002 /* Add this pane to the conversations notebook. */ | |
| 4003 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby); | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4004 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, menu_tabby); |
| 4359 | 4005 |
| 4006 gtk_widget_show(tab_cont); | |
| 4007 | |
| 4818 | 4008 if (gaim_window_get_conversation_count(win) == 1) { |
| 4009 /* Er, bug in notebooks? Switch to the page manually. */ | |
| 4359 | 4010 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0); |
| 4851 | 4011 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4012 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4013 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4014 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4015 else |
| 4818 | 4016 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE); |
| 4359 | 4017 |
| 5204 | 4018 focus_conv = g_list_nth_data(gaim_window_get_conversations(win), |
| 4019 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook))); | |
| 4020 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv); | |
| 4021 gtk_widget_grab_focus(focus_gtkconv->entry); | |
| 4359 | 4022 |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4023 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4024 gaim_gtkconv_update_buddy_icon(conv); |
| 4359 | 4025 |
| 4026 if (!new_ui) | |
| 4027 g_object_unref(gtkconv->tab_cont); | |
| 4028 | |
| 4029 if (gaim_window_get_conversation_count(win) == 1) | |
| 4685 | 4030 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 4031 } |
| 4032 | |
| 4033 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4034 gaim_gtk_remove_conversation(GaimWindow *win, GaimConversation *conv) |
| 4359 | 4035 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4036 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4037 GaimGtkConversation *gtkconv; |
| 4359 | 4038 unsigned int index; |
| 4818 | 4039 GaimConversationType conv_type; |
| 4040 | |
| 4041 conv_type = gaim_conversation_get_type(conv); | |
| 4359 | 4042 index = gaim_conversation_get_index(conv); |
| 4043 | |
| 4044 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4045 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4046 | |
| 4047 g_object_ref(gtkconv->tab_cont); | |
| 4048 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont)); | |
| 4049 | |
| 4050 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
| 4051 | |
| 4818 | 4052 /* go back to tabless if need be */ |
| 4053 if (gaim_window_get_conversation_count(win) <= 2) { | |
| 4054 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4055 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
| 4818 | 4056 } |
| 4057 | |
| 4058 | |
| 4359 | 4059 /* If this window is setup with an inactive gc, regenerate the menu. */ |
| 4818 | 4060 if (conv_type == GAIM_CONV_IM && |
| 4359 | 4061 gaim_conversation_get_gc(conv) == NULL) { |
| 4062 | |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
4063 generate_send_as_items(win, conv); |
| 4359 | 4064 } |
| 4065 } | |
| 4066 | |
| 4067 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4068 gaim_gtk_move_conversation(GaimWindow *win, GaimConversation *conv, |
| 4359 | 4069 unsigned int new_index) |
| 4070 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4071 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4072 GaimGtkConversation *gtkconv; |
| 4359 | 4073 |
| 4074 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4075 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4076 | |
|
4415
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4077 if (new_index > gaim_conversation_get_index(conv)) |
|
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4078 new_index--; |
|
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4079 |
| 4359 | 4080 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook), |
| 4081 gtkconv->tab_cont, new_index); | |
| 4082 } | |
| 4083 | |
| 4084 static int | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4085 gaim_gtk_get_active_index(const GaimWindow *win) |
| 4359 | 4086 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4087 GaimGtkWindow *gtkwin; |
|
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4088 int index; |
| 4359 | 4089 |
| 4090 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4091 | |
|
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4092 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)); |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4093 |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4094 /* |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4095 * A fix, because the first conversation may be active, but not |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4096 * appear in the notebook just yet. -- ChipX86 |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4097 */ |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4098 return (index == -1 ? 0 : index); |
| 4359 | 4099 } |
| 4100 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4101 static GaimWindowUiOps window_ui_ops = |
| 4359 | 4102 { |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4103 gaim_gtk_conversations_get_conv_ui_ops, |
| 4359 | 4104 gaim_gtk_new_window, |
| 4105 gaim_gtk_destroy_window, | |
| 4106 gaim_gtk_show, | |
| 4107 gaim_gtk_hide, | |
| 4108 gaim_gtk_raise, | |
| 4109 gaim_gtk_flash, | |
| 4110 gaim_gtk_switch_conversation, | |
| 4111 gaim_gtk_add_conversation, | |
| 4112 gaim_gtk_remove_conversation, | |
| 4113 gaim_gtk_move_conversation, | |
| 4114 gaim_gtk_get_active_index | |
| 4115 }; | |
| 4116 | |
| 4117 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4118 update_convo_add_button(GaimConversation *conv) |
| 4359 | 4119 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4120 GaimPluginProtocolInfo *prpl_info = NULL; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4121 GaimWindow *win; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4122 GaimGtkWindow *gtkwin; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4123 GaimGtkConversation *gtkconv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4124 GaimConnection *gc; |
| 4359 | 4125 GaimConversationType type; |
| 4126 GtkWidget *parent; | |
| 4127 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4128 gc = gaim_conversation_get_gc(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4129 win = gaim_conversation_get_window(conv); |
| 4359 | 4130 type = gaim_conversation_get_type(conv); |
| 4131 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4132 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4133 parent = gtk_widget_get_parent(gtkconv->u.im->add); |
| 4134 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4135 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4136 |
| 4687 | 4137 if (gaim_find_buddy(gc->account, gaim_conversation_get_name(conv))) { |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4138 gtkconv->u.im->add = |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4139 gaim_gtk_change_text(_("Remove"), gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4140 GTK_STOCK_REMOVE, type); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4141 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4142 _("Remove the user from your buddy list"), NULL); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4143 |
| 4359 | 4144 gtk_widget_set_sensitive(gtkconv->u.im->add, |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4145 (gc != NULL && prpl_info->remove_buddy != NULL)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4146 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4147 if (gaim_window_get_active_conversation(win) == conv) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4148 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4149 gtk_widget_hide(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4150 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4151 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4152 else { |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4153 gtkconv->u.im->add = |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4154 gaim_gtk_change_text(_("Add"), gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4155 GTK_STOCK_ADD, type); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4156 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4157 _("Add the user to your buddy list"), NULL); |
| 4359 | 4158 |
| 4159 gtk_widget_set_sensitive(gtkconv->u.im->add, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4160 (gc != NULL && prpl_info->add_buddy != NULL)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4161 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4162 if (gaim_window_get_active_conversation(win) == conv) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4163 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4164 gtk_widget_hide(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4165 } |
| 4359 | 4166 } |
| 4167 | |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4168 g_signal_connect(G_OBJECT(gtkconv->u.im->add), "clicked", |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4169 G_CALLBACK(add_cb), conv); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4170 |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4171 gtk_box_pack_start(GTK_BOX(parent), gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4172 FALSE, FALSE, 0); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4173 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->u.im->add, 3); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4174 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.im->add), GTK_RELIEF_NONE); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4175 gtk_size_group_add_widget(gtkconv->sg, gtkconv->u.im->add); |
| 4359 | 4176 } |
| 4177 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4178 GaimWindowUiOps * |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4179 gaim_gtk_conversations_get_win_ui_ops(void) |
| 4359 | 4180 { |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4181 return &window_ui_ops; |
| 4359 | 4182 } |
| 4183 | |
| 4184 /************************************************************************** | |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4185 * Conversation UI operations |
| 4359 | 4186 **************************************************************************/ |
| 4187 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4188 gaim_gtkconv_destroy(GaimConversation *conv) |
| 4359 | 4189 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4190 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4359 | 4191 |
| 4192 if (gtkconv->dialogs.fg_color != NULL) | |
| 4193 gtk_widget_destroy(gtkconv->dialogs.fg_color); | |
| 4194 | |
| 4195 if (gtkconv->dialogs.bg_color != NULL) | |
| 4196 gtk_widget_destroy(gtkconv->dialogs.bg_color); | |
| 4197 | |
| 4198 if (gtkconv->dialogs.font != NULL) | |
| 4199 gtk_widget_destroy(gtkconv->dialogs.font); | |
| 4200 | |
| 5959 | 4201 if (gtkconv->dialogs.image != NULL) |
| 4202 gtk_widget_destroy(gtkconv->dialogs.image); | |
| 4203 | |
| 4359 | 4204 if (gtkconv->dialogs.smiley != NULL) |
| 4205 gtk_widget_destroy(gtkconv->dialogs.smiley); | |
| 4206 | |
| 4207 if (gtkconv->dialogs.link != NULL) | |
| 4208 gtk_widget_destroy(gtkconv->dialogs.link); | |
| 4209 | |
| 4210 if (gtkconv->dialogs.log != NULL) | |
| 4211 gtk_widget_destroy(gtkconv->dialogs.log); | |
| 4212 | |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4213 gtk_widget_destroy(gtkconv->tab_cont); |
| 4892 | 4214 g_object_unref(gtkconv->tab_cont); |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4215 |
| 4359 | 4216 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 4755 | 4217 if (gtkconv->u.im->icon_timer != 0) |
| 4218 g_source_remove(gtkconv->u.im->icon_timer); | |
| 4219 | |
| 4359 | 4220 if (gtkconv->u.im->save_icon != NULL) |
| 4221 gtk_widget_destroy(gtkconv->u.im->save_icon); | |
| 4222 | |
| 4223 if (gtkconv->u.im->anim != NULL) | |
| 4793 | 4224 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 4359 | 4225 |
| 4226 g_free(gtkconv->u.im); | |
| 4227 } | |
| 4228 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 4229 g_free(gtkconv->u.chat); | |
| 4230 } | |
| 4231 | |
| 4633 | 4232 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips)); |
| 4233 | |
| 4359 | 4234 g_free(gtkconv); |
| 4235 } | |
| 4236 | |
| 4237 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4238 gaim_gtkconv_write_im(GaimConversation *conv, const char *who, |
| 6982 | 4239 const char *message, GaimMessageFlags flags, |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4240 time_t mtime) |
| 4359 | 4241 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4242 GaimGtkConversation *gtkconv; |
| 4359 | 4243 |
| 4244 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4245 | |
| 6621 | 4246 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4247 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4248 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4249 gaim_window_raise(gaim_conversation_get_window(conv)); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4250 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4251 |
|
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4252 /* Play a sound, if specified in prefs. */ |
| 4359 | 4253 if (gtkconv->make_sound) { |
| 6621 | 4254 if (flags & GAIM_MESSAGE_RECV) { |
| 4359 | 4255 if (gtkconv->u.im->a_virgin && |
| 5820 | 4256 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) { |
| 4359 | 4257 |
| 4561 | 4258 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE); |
| 4359 | 4259 } |
| 4260 else | |
| 4561 | 4261 gaim_sound_play_event(GAIM_SOUND_RECEIVE); |
| 4359 | 4262 } |
| 4263 else { | |
| 4561 | 4264 gaim_sound_play_event(GAIM_SOUND_SEND); |
| 4359 | 4265 } |
| 4266 } | |
| 4267 | |
| 4268 gtkconv->u.im->a_virgin = FALSE; | |
| 4269 | |
| 6982 | 4270 gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4271 } |
| 4272 | |
| 4273 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4274 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who, |
| 6621 | 4275 const char *message, GaimMessageFlags flags, time_t mtime) |
| 4359 | 4276 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4277 GaimGtkConversation *gtkconv; |
| 4359 | 4278 |
| 4279 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4280 | |
|
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4281 /* Play a sound, if specified in prefs. */ |
| 4359 | 4282 if (gtkconv->make_sound) { |
| 6621 | 4283 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND)) |
| 4561 | 4284 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY); |
| 6621 | 4285 else if (flags & GAIM_MESSAGE_RECV) { |
| 4286 if ((flags & GAIM_MESSAGE_NICK) && | |
| 6102 | 4287 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4288 |
| 4561 | 4289 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4290 } |
| 4359 | 4291 else |
| 4561 | 4292 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY); |
| 4359 | 4293 } |
| 4294 } | |
| 4295 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4296 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks")) |
| 6621 | 4297 flags |= GAIM_MESSAGE_COLORIZE; |
| 4359 | 4298 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4299 /* Raise the window, if specified in prefs. */ |
| 6621 | 4300 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4301 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4302 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4303 gaim_window_raise(gaim_conversation_get_window(conv)); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4304 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4305 |
| 6982 | 4306 gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4307 } |
| 4308 | |
| 4309 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4310 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who, |
| 6982 | 4311 const char *message, GaimMessageFlags flags, |
| 4359 | 4312 time_t mtime) |
| 4313 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4314 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4315 GaimWindow *win; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4316 GaimConnection *gc; |
| 4359 | 4317 int gtk_font_options = 0; |
| 4318 GString *log_str; | |
| 6982 | 4319 GSList *images = NULL; |
| 4359 | 4320 FILE *fd; |
| 4321 char buf[BUF_LONG]; | |
| 4322 char buf2[BUF_LONG]; | |
| 4323 char mdate[64]; | |
| 4324 char color[10]; | |
| 4325 char *str; | |
| 4326 char *with_font_tag; | |
| 4896 | 4327 char *sml_attrib = NULL; |
| 6982 | 4328 size_t length = strlen(message) + 1; |
| 4895 | 4329 |
| 4359 | 4330 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4331 gc = gaim_conversation_get_gc(conv); | |
| 4332 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4333 win = gaim_conversation_get_window(conv); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4334 |
| 6621 | 4335 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4336 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4337 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) || |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4338 (gaim_conversation_get_type(conv) == GAIM_CONV_IM && |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4339 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") || |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4340 gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))))) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4341 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4342 gaim_window_show(win); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4343 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4344 |
| 7078 | 4345 if (flags & GAIM_MESSAGE_IMAGES) |
| 4346 gaim_gtk_find_images(message, &images); | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4347 |
| 5133 | 4348 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */ |
| 4349 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime)); | |
| 4350 else | |
| 4351 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); | |
| 4359 | 4352 |
| 4896 | 4353 if(gc) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4354 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name); |
| 4896 | 4355 |
| 4359 | 4356 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS; |
| 4357 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4358 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors")) |
| 4359 | 4359 gtk_font_options ^= GTK_IMHTML_NO_COLOURS; |
| 4360 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4361 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts")) |
| 4359 | 4362 gtk_font_options ^= GTK_IMHTML_NO_FONTS; |
| 4363 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4364 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes")) |
| 4359 | 4365 gtk_font_options ^= GTK_IMHTML_NO_SIZES; |
| 4366 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4367 if (!gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
| 4359 | 4368 gtk_font_options ^= GTK_IMHTML_RETURN_LOG; |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4369 |
| 6185 | 4370 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol(conv->account)))->options & |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4371 OPT_PROTO_USE_POINTSIZE) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4372 |
| 5367 | 4373 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE; |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4374 } |
| 4359 | 4375 |
| 6621 | 4376 if (flags & GAIM_MESSAGE_SYSTEM) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4377 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
| 5329 | 4378 g_snprintf(buf, BUF_LONG, "(%s) <B>%s</B>", |
| 4359 | 4379 mdate, message); |
| 4380 else | |
| 4381 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message); | |
| 4382 | |
| 4383 g_snprintf(buf2, sizeof(buf2), | |
| 5329 | 4384 "<!--(%s) --><B>%s</B><BR>", |
| 4359 | 4385 mdate, message); |
| 4386 | |
| 6982 | 4387 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images); |
| 4359 | 4388 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4389 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) { |
|
7095
c8bf2da398e3
[gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents:
7090
diff
changeset
|
4390 char *t1 = gaim_markup_strip_html(buf); |
| 4359 | 4391 |
| 4392 conv->history = g_string_append(conv->history, t1); | |
| 4393 conv->history = g_string_append(conv->history, "\n"); | |
| 4394 | |
| 4395 g_free(t1); | |
| 4396 } | |
| 4397 else { | |
| 4398 conv->history = g_string_append(conv->history, buf); | |
| 4399 conv->history = g_string_append(conv->history, "<BR>\n"); | |
| 4400 } | |
| 4401 | |
| 6621 | 4402 if (!(flags & GAIM_MESSAGE_NO_LOG) && gaim_conversation_is_logging(conv)) { |
| 4359 | 4403 |
| 4404 char *t1; | |
| 4405 char nm[256]; | |
| 4406 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4407 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
|
7095
c8bf2da398e3
[gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents:
7090
diff
changeset
|
4408 t1 = gaim_markup_strip_html(buf); |
| 4359 | 4409 else |
| 4410 t1 = buf; | |
| 4411 | |
| 4412 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) | |
| 4413 g_snprintf(nm, sizeof(nm), "%s.chat", | |
| 4414 gaim_conversation_get_name(conv)); | |
| 4415 else | |
| 4416 strncpy(nm, gaim_conversation_get_name(conv), sizeof(nm)); | |
| 4417 | |
| 4418 fd = open_log_file(nm, | |
| 4419 (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)); | |
| 4420 | |
| 4421 if (fd) { | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4422 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
| 4359 | 4423 fprintf(fd, "%s\n", t1); |
| 4424 else | |
| 4425 fprintf(fd, "%s<BR>\n", t1); | |
| 4426 | |
| 4427 fclose(fd); | |
| 4428 } | |
| 4429 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4430 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
| 4359 | 4431 g_free(t1); |
| 4432 } | |
| 4433 } | |
| 6621 | 4434 else if (flags & GAIM_MESSAGE_NO_LOG) { |
| 4359 | 4435 g_snprintf(buf, BUF_LONG, |
| 4436 "<B><FONT COLOR=\"#777777\">%s</FONT></B><BR>", | |
| 4437 message); | |
| 4438 | |
| 6982 | 4439 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf, 0, images); |
| 4359 | 4440 } |
| 4441 else { | |
| 4895 | 4442 char *new_message = g_memdup(message, length); |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4443 |
| 6621 | 4444 if (flags & GAIM_MESSAGE_WHISPER) { |
| 4359 | 4445 str = g_malloc(1024); |
| 4446 | |
| 4447 /* If we're whispering, it's not an autoresponse. */ | |
| 4448 if (meify(new_message, length)) { | |
| 4449 g_snprintf(str, 1024, "***%s", who); | |
| 4450 strcpy(color, "#6C2585"); | |
| 4451 } | |
| 4452 else { | |
| 4453 g_snprintf(str, 1024, "*%s*:", who); | |
| 4454 strcpy(color, "#00FF00"); | |
| 4455 } | |
| 4456 } | |
| 4457 else { | |
| 4458 if (meify(new_message, length)) { | |
| 4459 str = g_malloc(1024); | |
| 4460 | |
| 6621 | 4461 if (flags & GAIM_MESSAGE_AUTO_RESP) |
| 4359 | 4462 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who); |
| 4463 else | |
| 4464 g_snprintf(str, 1024, "***%s", who); | |
| 4465 | |
| 6621 | 4466 if (flags & GAIM_MESSAGE_NICK) |
| 4359 | 4467 strcpy(color, "#AF7F00"); |
| 4468 else | |
| 4469 strcpy(color, "#062585"); | |
| 4470 } | |
| 4471 else { | |
| 4472 str = g_malloc(1024); | |
| 4473 | |
| 6621 | 4474 if (flags & GAIM_MESSAGE_AUTO_RESP) |
| 4359 | 4475 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE); |
| 4476 else | |
| 4477 g_snprintf(str, 1024, "%s:", who); | |
| 4478 | |
| 6621 | 4479 if (flags & GAIM_MESSAGE_NICK) |
| 4359 | 4480 strcpy(color, "#AF7F00"); |
| 6621 | 4481 else if (flags & GAIM_MESSAGE_RECV) { |
| 4482 if (flags & GAIM_MESSAGE_COLORIZE) { | |
| 4359 | 4483 const char *u; |
| 4484 int m = 0; | |
| 4485 | |
| 4486 for (u = who; *u != '\0'; u++) | |
| 4487 m += *u; | |
| 4488 | |
| 4489 m = m % NUM_NICK_COLORS; | |
| 4490 | |
| 4491 strcpy(color, nick_colors[m]); | |
| 4492 } | |
| 4493 else | |
| 4494 strcpy(color, "#A82F2F"); | |
| 4495 } | |
| 6621 | 4496 else if (flags & GAIM_MESSAGE_SEND) |
| 4359 | 4497 strcpy(color, "#16569E"); |
| 4498 } | |
| 4499 } | |
| 4500 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4501 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
| 4359 | 4502 g_snprintf(buf, BUF_LONG, |
| 5329 | 4503 "<FONT COLOR=\"%s\" %s>(%s) " |
| 4896 | 4504 "<B>%s</B></FONT> ", color, |
| 4505 sml_attrib ? sml_attrib : "", mdate, str); | |
| 4359 | 4506 else |
| 4507 g_snprintf(buf, BUF_LONG, | |
| 4896 | 4508 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color, |
| 4509 sml_attrib ? sml_attrib : "", str); | |
| 4359 | 4510 |
| 4511 g_snprintf(buf2, BUF_LONG, | |
| 5329 | 4512 "<FONT COLOR=\"%s\" %s><!--(%s) -->" |
| 4359 | 4513 "<B>%s</B></FONT> ", |
| 4896 | 4514 color, sml_attrib ? sml_attrib : "", mdate, str); |
| 4359 | 4515 |
| 4516 g_free(str); | |
| 4517 | |
| 6982 | 4518 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images); |
| 4359 | 4519 |
| 4895 | 4520 if(gc){ |
| 4896 | 4521 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : ""); |
| 4895 | 4522 char *post = "</font>"; |
| 4523 int pre_len = strlen(pre); | |
| 4524 int post_len = strlen(post); | |
| 4525 | |
| 4526 with_font_tag = g_malloc(length + pre_len + post_len + 1); | |
| 4527 | |
| 4528 strcpy(with_font_tag, pre); | |
| 4529 memcpy(with_font_tag + pre_len, new_message, length); | |
| 4530 strcpy(with_font_tag + pre_len + length, post); | |
| 4531 | |
| 4532 length += pre_len + post_len; | |
| 4533 g_free(pre); | |
| 4534 } | |
| 4608 | 4535 else |
| 4895 | 4536 with_font_tag = g_memdup(new_message, length); |
| 4359 | 4537 |
| 6982 | 4538 log_str = gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
| 4539 with_font_tag, gtk_font_options, images); | |
| 4540 | |
| 4541 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0); | |
| 4542 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4543 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) { |
| 4359 | 4544 char *t1, *t2; |
| 4545 | |
|
7095
c8bf2da398e3
[gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents:
7090
diff
changeset
|
4546 t1 = gaim_markup_strip_html(buf); |
|
c8bf2da398e3
[gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents:
7090
diff
changeset
|
4547 t2 = gaim_markup_strip_html(new_message); |
| 4359 | 4548 |
| 4549 conv->history = g_string_append(conv->history, t1); | |
| 4550 conv->history = g_string_append(conv->history, t2); | |
| 4551 conv->history = g_string_append(conv->history, "\n"); | |
| 4552 | |
| 4553 g_free(t1); | |
| 4554 g_free(t2); | |
| 4555 } | |
| 4556 else { | |
| 4557 char *t1, *t2; | |
| 4558 | |
| 4559 t1 = html_logize(buf); | |
| 4560 t2 = html_logize(new_message); | |
| 4561 | |
| 4562 conv->history = g_string_append(conv->history, t1); | |
| 4563 conv->history = g_string_append(conv->history, t2); | |
| 4564 conv->history = g_string_append(conv->history, "\n"); | |
| 4565 conv->history = g_string_append(conv->history, log_str->str); | |
| 4566 conv->history = g_string_append(conv->history, "<BR>\n"); | |
| 4567 | |
| 4568 g_free(t1); | |
| 4569 g_free(t2); | |
| 4570 } | |
| 4571 | |
| 4572 if (gaim_conversation_is_logging(conv)) { | |
| 4573 char *t1, *t2; | |
| 4574 char nm[256]; | |
| 4575 | |
| 4576 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) | |
| 4577 g_snprintf(nm, sizeof(nm), "%s.chat", | |
| 4578 gaim_conversation_get_name(conv)); | |
| 4579 else | |
| 4580 strncpy(nm, gaim_conversation_get_name(conv), sizeof(nm)); | |
| 4581 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4582 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) { |
|
7095
c8bf2da398e3
[gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents:
7090
diff
changeset
|
4583 t1 = gaim_markup_strip_html(buf); |
|
c8bf2da398e3
[gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents:
7090
diff
changeset
|
4584 t2 = gaim_markup_strip_html(with_font_tag); |
| 4359 | 4585 } |
| 4586 else { | |
| 4587 t1 = html_logize(buf); | |
| 4588 t2 = html_logize(with_font_tag); | |
| 4589 } | |
| 4590 | |
| 4591 fd = open_log_file(nm, | |
| 4592 (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)); | |
| 4593 | |
| 4594 if (fd) { | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4595 if (gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
| 4359 | 4596 fprintf(fd, "%s%s\n", t1, t2); |
| 4597 else { | |
| 4598 fprintf(fd, "%s%s%s<BR>\n", t1, t2, log_str->str); | |
| 4599 g_string_free(log_str, TRUE); | |
| 4600 } | |
| 4601 | |
| 4602 fclose(fd); | |
| 4603 } | |
| 4604 | |
| 4605 g_free(t1); | |
| 4606 g_free(t2); | |
| 4607 } | |
| 4608 | |
| 4609 g_free(with_font_tag); | |
| 4610 g_free(new_message); | |
| 4611 } | |
| 6062 | 4612 |
| 5012 | 4613 if(sml_attrib) |
| 4614 g_free(sml_attrib); | |
| 6982 | 4615 |
| 4616 if (images) { | |
| 7078 | 4617 GSList *tmp; |
| 4618 | |
| 4619 for (tmp = images; tmp; tmp = tmp->next) { | |
| 4620 GdkPixbuf *pixbuf = tmp->data; | |
| 4621 if(pixbuf) | |
| 4622 g_object_unref(pixbuf); | |
| 6982 | 4623 } |
| 7078 | 4624 |
| 6982 | 4625 g_slist_free(images); |
| 4626 } | |
| 4359 | 4627 } |
| 4628 | |
| 4629 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4630 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user) |
| 4359 | 4631 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4632 GaimChat *chat; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4633 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4634 GaimGtkChatPane *gtkchat; |
| 4359 | 4635 char tmp[BUF_LONG]; |
| 4636 int num_users; | |
| 4637 int pos; | |
| 4638 | |
| 4639 chat = GAIM_CHAT(conv); | |
| 4640 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4641 gtkchat = gtkconv->u.chat; | |
| 4642 | |
| 4643 num_users = g_list_length(gaim_chat_get_users(chat)); | |
| 4644 | |
| 4645 g_snprintf(tmp, sizeof(tmp), | |
| 4646 ngettext("%d person in room", "%d people in room", | |
| 4647 num_users), | |
| 4648 num_users); | |
| 4649 | |
| 4650 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
| 4651 | |
| 4652 if (gtkconv->make_sound) | |
| 4561 | 4653 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN); |
| 4359 | 4654 |
| 4655 pos = g_list_index(gaim_chat_get_users(chat), user); | |
| 4656 | |
| 4657 add_chat_buddy_common(conv, user, pos); | |
| 4658 } | |
| 4659 | |
| 4660 static void | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4661 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4662 { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4663 GaimChat *chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4664 GaimGtkConversation *gtkconv; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4665 GaimGtkChatPane *gtkchat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4666 GList *l; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4667 char tmp[BUF_LONG]; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4668 int num_users; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4669 int pos; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4670 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4671 chat = GAIM_CHAT(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4672 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4673 gtkchat = gtkconv->u.chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4674 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4675 num_users = g_list_length(gaim_chat_get_users(chat)); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4676 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4677 g_snprintf(tmp, sizeof(tmp), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4678 ngettext("%d person in room", "%d people in room", |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4679 num_users), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4680 num_users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4681 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4682 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4683 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4684 for (l = users; l != NULL; l = l->next) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4685 pos = g_list_index(gaim_chat_get_users(chat), (char *)l->data); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4686 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4687 add_chat_buddy_common(conv, (char *)l->data, pos); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4688 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4689 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4690 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4691 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4692 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name, |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4693 const char *new_name) |
| 4359 | 4694 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4695 GaimChat *chat; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4696 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4697 GaimGtkChatPane *gtkchat; |
| 4359 | 4698 GtkTreeIter iter; |
| 4699 GtkTreeModel *model; | |
| 4700 GList *names; | |
| 4701 int pos; | |
| 4702 int f = 1; | |
| 4703 | |
| 4704 chat = GAIM_CHAT(conv); | |
| 4705 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4706 gtkchat = gtkconv->u.chat; | |
| 4707 | |
| 4708 for (names = gaim_chat_get_users(chat); | |
| 4709 names != NULL; | |
| 4710 names = names->next) { | |
| 4711 | |
| 4712 char *u = (char *)names->data; | |
| 4713 | |
| 4793 | 4714 if (!gaim_utf8_strcasecmp(u, old_name)) { |
| 4359 | 4715 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
| 4716 | |
| 4717 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
| 4718 break; | |
| 4719 | |
| 4720 while (f != 0) { | |
| 4721 char *val; | |
| 4722 | |
| 4723 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
| 4724 | |
| 4793 | 4725 if (!gaim_utf8_strcasecmp(old_name, val)) { |
| 4359 | 4726 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 4640 | 4727 break; |
| 4728 } | |
| 4359 | 4729 |
| 4730 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
| 4731 | |
| 4732 g_free(val); | |
| 4733 } | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4734 |
| 4359 | 4735 break; |
| 4736 } | |
| 4737 } | |
| 4738 | |
| 4739 if (!names) | |
| 4740 return; | |
| 4741 | |
| 4742 pos = g_list_index(gaim_chat_get_users(chat), new_name); | |
| 4743 | |
| 4744 add_chat_buddy_common(conv, new_name, pos); | |
| 4745 } | |
| 4746 | |
| 4747 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4748 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user) |
| 4359 | 4749 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4750 GaimChat *chat; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4751 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4752 GaimGtkChatPane *gtkchat; |
| 4359 | 4753 GtkTreeIter iter; |
| 4754 GtkTreeModel *model; | |
| 4755 GList *names; | |
| 4756 char tmp[BUF_LONG]; | |
| 4757 int num_users; | |
| 4758 int f = 1; | |
| 4759 | |
| 4760 chat = GAIM_CHAT(conv); | |
| 4761 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4762 gtkchat = gtkconv->u.chat; | |
| 4763 | |
| 4764 num_users = g_list_length(gaim_chat_get_users(chat)) - 1; | |
| 4765 | |
| 4766 for (names = gaim_chat_get_users(chat); | |
| 4767 names != NULL; | |
| 4768 names = names->next) { | |
| 4769 | |
| 4770 char *u = (char *)names->data; | |
| 4771 | |
| 4793 | 4772 if (!gaim_utf8_strcasecmp(u, user)) { |
| 4359 | 4773 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
| 4774 | |
| 4775 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
| 4776 break; | |
| 4777 | |
| 4778 while (f != 0) { | |
| 4779 char *val; | |
| 4780 | |
| 4781 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
| 4782 | |
| 4793 | 4783 if (!gaim_utf8_strcasecmp(user, val)) |
| 4359 | 4784 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 4785 | |
| 4786 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
| 4787 | |
| 4788 g_free(val); | |
| 4789 } | |
| 4790 | |
| 4791 break; | |
| 4792 } | |
| 4793 } | |
| 4794 | |
| 4795 if (names == NULL) | |
| 4796 return; | |
| 4797 | |
| 4798 g_snprintf(tmp, sizeof(tmp), | |
| 4799 ngettext("%d person in room", "%d people in room", | |
| 4800 num_users), num_users); | |
| 4801 | |
| 4802 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
| 4803 | |
| 4804 if (gtkconv->make_sound) | |
| 4561 | 4805 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE); |
| 4359 | 4806 } |
| 4807 | |
| 4808 static void | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4809 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4810 { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4811 GaimChat *chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4812 GaimGtkConversation *gtkconv; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4813 GaimGtkChatPane *gtkchat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4814 GtkTreeIter iter; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4815 GtkTreeModel *model; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4816 GList *names = NULL; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4817 GList *l; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4818 char tmp[BUF_LONG]; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4819 int num_users; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4820 int f = 1; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4821 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4822 chat = GAIM_CHAT(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4823 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4824 gtkchat = gtkconv->u.chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4825 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4826 num_users = g_list_length(gaim_chat_get_users(chat)) - |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4827 g_list_length(users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4828 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4829 for (l = users; l != NULL; l = l->next) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4830 for (names = gaim_chat_get_users(chat); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4831 names != NULL; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4832 names = names->next) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4833 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4834 char *u = (char *)names->data; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4835 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4836 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4837 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4838 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4839 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4840 &iter)) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4841 break; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4842 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4843 while (f != 0) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4844 char *val; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4845 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4846 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4847 1, &val, -1); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4848 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4849 if (!gaim_utf8_strcasecmp((char *)l->data, val)) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4850 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4851 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4852 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4853 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4854 g_free(val); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4855 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4856 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4857 break; |
|
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 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4860 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4861 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4862 if (names == NULL) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4863 return; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4864 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4865 g_snprintf(tmp, sizeof(tmp), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4866 ngettext("%d person in room", "%d people in room", |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4867 num_users), num_users); |
|
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 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4870 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4871 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4872 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4873 gaim_gtkconv_set_title(GaimConversation *conv, const char *title) |
| 4359 | 4874 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4875 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4876 GaimWindow *win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4877 GaimGtkWindow *gtkwin; |
| 4681 | 4878 |
| 4879 win = gaim_conversation_get_window(conv); | |
| 4880 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4359 | 4881 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4882 | |
| 4883 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4884 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4885 |
| 4681 | 4886 if(conv == gaim_window_get_active_conversation(win)) |
| 4887 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); | |
| 4359 | 4888 } |
| 4889 | |
| 4890 static void | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4891 update_tab_icon(GaimConversation *conv) |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4892 { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4893 GaimGtkConversation *gtkconv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4894 GaimAccount *account; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4895 const char *name; |
| 6695 | 4896 GaimBuddy *b; |
| 7008 | 4897 GdkPixbuf *status = NULL; |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4898 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4899 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4900 name = gaim_conversation_get_name(conv); |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4901 account = gaim_conversation_get_account(conv); |
| 6440 | 4902 |
| 4903 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 4904 b = gaim_find_buddy(account, name); | |
| 4905 if (b != NULL) { | |
| 7008 | 4906 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, |
| 4907 GAIM_STATUS_ICON_SMALL); | |
| 6440 | 4908 } |
| 7008 | 4909 } |
| 4910 | |
| 4911 if (!status) { | |
| 4912 GdkPixbuf *pixbuf; | |
| 6440 | 4913 pixbuf = create_prpl_icon(account); |
| 4914 | |
| 4915 if (pixbuf) { | |
| 7008 | 4916 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15, |
| 4917 GDK_INTERP_BILINEAR); | |
| 6440 | 4918 g_object_unref(pixbuf); |
| 4919 } | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4920 } |
| 7008 | 4921 |
| 4922 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); | |
| 4923 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); | |
| 4924 | |
| 4925 if(status) | |
| 4926 g_object_unref(status); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4927 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4928 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4929 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4930 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) |
| 4359 | 4931 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4932 GaimWindow *win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4933 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4934 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4935 GaimGtkChatPane *gtkchat; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4936 GaimChat *chat; |
| 4359 | 4937 |
| 4938 win = gaim_conversation_get_window(conv); | |
| 4736 | 4939 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4940 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4941 | |
| 4491 | 4942 if (type == GAIM_CONV_UPDATE_ACCOUNT) { |
| 4359 | 4943 gaim_conversation_autoset_title(conv); |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4944 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4945 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4946 gaim_gtkconv_update_buddy_icon(conv); |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4947 |
| 4359 | 4948 gaim_gtkconv_update_buttons_by_protocol(conv); |
| 4949 | |
| 4685 | 4950 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 4951 |
| 4952 smiley_themeize(gtkconv->imhtml); | |
| 6394 | 4953 |
| 6395 | 4954 update_tab_icon(conv); |
| 4359 | 4955 } |
| 4956 else if (type == GAIM_CONV_UPDATE_TYPING || | |
| 4957 type == GAIM_CONV_UPDATE_UNSEEN) { | |
| 4958 GtkStyle *style; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4959 GaimIm *im = NULL; |
| 4359 | 4960 |
| 4736 | 4961 |
| 4359 | 4962 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
| 4963 im = GAIM_IM(conv); | |
| 4964 | |
| 4965 style = gtk_style_new(); | |
| 4966 | |
| 4967 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) | |
| 4968 gtk_widget_realize(gtkconv->tab_label); | |
| 4969 | |
| 4757 | 4970 pango_font_description_free(style->font_desc); |
| 4635 | 4971 style->font_desc = pango_font_description_copy( |
| 4972 gtk_widget_get_style(gtkconv->tab_label)->font_desc); | |
| 4359 | 4973 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
4974 if (im != NULL && gaim_im_get_typing_state(im) == GAIM_TYPING) { |
| 4577 | 4975 style->fg[GTK_STATE_NORMAL].red = 0x4646; |
| 4976 style->fg[GTK_STATE_NORMAL].green = 0xA0A0; | |
| 4977 style->fg[GTK_STATE_NORMAL].blue = 0x4646; | |
| 4978 style->fg[GTK_STATE_ACTIVE] = style->fg[GTK_STATE_NORMAL]; | |
| 4359 | 4979 } |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
4980 else if (im != NULL && gaim_im_get_typing_state(im) == GAIM_TYPED) { |
| 4577 | 4981 style->fg[GTK_STATE_NORMAL].red = 0xD1D1; |
| 4982 style->fg[GTK_STATE_NORMAL].green = 0x9494; | |
| 4983 style->fg[GTK_STATE_NORMAL].blue = 0x0C0C; | |
| 4984 style->fg[GTK_STATE_ACTIVE] = style->fg[GTK_STATE_NORMAL]; | |
| 4359 | 4985 } |
| 4986 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) { | |
| 4577 | 4987 style->fg[GTK_STATE_ACTIVE].red = 0x3131; |
| 4988 style->fg[GTK_STATE_ACTIVE].green = 0x4E4E; | |
| 4989 style->fg[GTK_STATE_ACTIVE].blue = 0x6C6C; | |
| 4578 | 4990 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE]; |
| 4359 | 4991 } |
|
6405
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
4992 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT) { |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
4993 style->fg[GTK_STATE_ACTIVE].red = 0x8686;; |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
4994 style->fg[GTK_STATE_ACTIVE].green = 0x8282; |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
4995 style->fg[GTK_STATE_ACTIVE].blue = 0x7272; |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
4996 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE]; |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
4997 } |
| 4359 | 4998 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT) { |
| 4577 | 4999 style->fg[GTK_STATE_ACTIVE].red = 0xDFDF; |
| 5000 style->fg[GTK_STATE_ACTIVE].green = 0x4242; | |
| 5001 style->fg[GTK_STATE_ACTIVE].blue = 0x1E1E; | |
| 4578 | 5002 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE]; |
| 4359 | 5003 } |
| 5004 | |
| 5005 gtk_widget_set_style(gtkconv->tab_label, style); | |
| 4635 | 5006 g_object_unref(G_OBJECT(style)); |
| 4736 | 5007 |
| 4812 | 5008 if(conv == gaim_window_get_active_conversation(win)) { |
| 4736 | 5009 update_typing_icon(conv); |
| 5010 } | |
| 5011 | |
| 4359 | 5012 } |
| 5013 else if (type == GAIM_CONV_UPDATE_TOPIC) { | |
| 5014 chat = GAIM_CHAT(conv); | |
| 5015 gtkchat = gtkconv->u.chat; | |
| 5016 | |
| 5017 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text), | |
| 5018 gaim_chat_get_topic(chat)); | |
| 5019 } | |
| 5020 else if (type == GAIM_CONV_ACCOUNT_ONLINE || | |
| 5021 type == GAIM_CONV_ACCOUNT_OFFLINE) { | |
| 5022 | |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
5023 generate_send_as_items(win, NULL); |
| 6440 | 5024 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
| 5025 update_tab_icon(conv); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5026 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5027 else if (type == GAIM_CONV_UPDATE_AWAY) { |
| 6440 | 5028 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
| 5029 update_tab_icon(conv); | |
| 4359 | 5030 } |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5031 else if (type == GAIM_CONV_UPDATE_ADD || |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5032 type == GAIM_CONV_UPDATE_REMOVE) { |
| 4736 | 5033 |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
5034 update_convo_add_button(conv); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
5035 } |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5036 else if (type == GAIM_CONV_UPDATE_ICON) |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5037 { |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5038 gaim_gtkconv_update_buddy_icon(conv); |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5039 } |
| 4359 | 5040 } |
| 5041 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5042 static GaimConversationUiOps conversation_ui_ops = |
| 4359 | 5043 { |
| 5044 gaim_gtkconv_destroy, /* destroy_conversation */ | |
| 5045 gaim_gtkconv_write_chat, /* write_chat */ | |
| 5046 gaim_gtkconv_write_im, /* write_im */ | |
| 5047 gaim_gtkconv_write_conv, /* write_conv */ | |
| 5048 gaim_gtkconv_chat_add_user, /* chat_add_user */ | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5049 gaim_gtkconv_chat_add_users, /* chat_add_users */ |
| 4359 | 5050 gaim_gtkconv_chat_rename_user, /* chat_rename_user */ |
| 5051 gaim_gtkconv_chat_remove_user, /* chat_remove_user */ | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5052 gaim_gtkconv_chat_remove_users, /* chat_remove_users */ |
| 4359 | 5053 gaim_gtkconv_set_title, /* set_title */ |
| 5054 NULL, /* update_progress */ | |
| 5055 gaim_gtkconv_updated /* updated */ | |
| 5056 }; | |
| 5057 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5058 GaimConversationUiOps * |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5059 gaim_gtk_conversations_get_conv_ui_ops(void) |
| 4359 | 5060 { |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
5061 return &conversation_ui_ops; |
| 4359 | 5062 } |
| 5063 | |
| 5064 /************************************************************************** | |
| 5065 * Public conversation utility functions | |
| 5066 **************************************************************************/ | |
| 5067 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5068 remove_icon(GaimGtkConversation *gtkconv) |
| 4359 | 5069 { |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5070 g_return_if_fail(gtkconv != NULL); |
| 4359 | 5071 |
| 5072 if (gtkconv->u.im->icon != NULL) | |
| 5073 gtk_container_remove(GTK_CONTAINER(gtkconv->bbox), | |
| 5074 gtkconv->u.im->icon->parent->parent); | |
| 5075 | |
| 5076 if (gtkconv->u.im->anim != NULL) | |
| 4793 | 5077 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 4359 | 5078 |
| 5079 if (gtkconv->u.im->icon_timer != 0) | |
| 5080 g_source_remove(gtkconv->u.im->icon_timer); | |
| 5081 | |
| 5082 if (gtkconv->u.im->iter != NULL) | |
| 5083 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 5084 | |
| 5085 gtkconv->u.im->icon_timer = 0; | |
| 5086 gtkconv->u.im->icon = NULL; | |
| 5087 gtkconv->u.im->anim = NULL; | |
| 5088 gtkconv->u.im->iter = NULL; | |
| 5089 } | |
| 5090 | |
| 5091 static gboolean | |
| 5092 redraw_icon(gpointer data) | |
| 5093 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5094 GaimConversation *conv = (GaimConversation *)data; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5095 GaimGtkConversation *gtkconv; |
| 4359 | 5096 |
| 5097 GdkPixbuf *buf; | |
| 5098 GdkPixbuf *scale; | |
| 5099 GdkPixmap *pm; | |
| 5100 GdkBitmap *bm; | |
| 5101 gint delay; | |
| 5102 | |
| 5103 if (!g_list_find(gaim_get_ims(), conv)) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5104 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5105 "Conversation not found in redraw_icon. I think this " |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5106 "is a bug.\n"); |
| 4359 | 5107 return FALSE; |
| 5108 } | |
| 5109 | |
| 5110 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5111 | |
| 5112 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL); | |
| 5113 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
| 5114 | |
| 5115 scale = gdk_pixbuf_scale_simple(buf, | |
| 5116 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) / | |
| 5117 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
| 5118 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) / | |
| 5119 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
| 5120 GDK_INTERP_NEAREST); | |
| 5121 | |
| 5122 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 4793 | 5123 g_object_unref(G_OBJECT(scale)); |
| 4635 | 5124 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm); |
| 4793 | 5125 g_object_unref(G_OBJECT(pm)); |
| 4359 | 5126 gtk_widget_queue_draw(gtkconv->u.im->icon); |
| 5127 | |
| 5128 if (bm) | |
| 4793 | 5129 g_object_unref(G_OBJECT(bm)); |
| 4359 | 5130 |
| 5131 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; | |
| 5132 | |
| 5133 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv); | |
| 5134 | |
| 5135 return FALSE; | |
| 5136 } | |
| 5137 | |
| 5138 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5139 start_anim(GtkObject *obj, GaimConversation *conv) |
| 4359 | 5140 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5141 GaimGtkConversation *gtkconv; |
| 4359 | 5142 int delay; |
| 5143 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5144 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5145 return; |
| 5146 | |
| 5147 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5148 | |
| 6016 | 5149 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) |
| 5150 return; | |
| 5151 | |
| 4359 | 5152 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; |
| 5153 | |
| 5154 if (gtkconv->u.im->anim) | |
| 5155 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, | |
| 5156 conv); | |
| 5157 } | |
| 5158 | |
| 5159 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5160 stop_anim(GtkObject *obj, GaimConversation *conv) |
| 4359 | 5161 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5162 GaimGtkConversation *gtkconv; |
| 4359 | 5163 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5164 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5165 return; |
| 5166 | |
| 5167 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5168 | |
| 5169 if (gtkconv->u.im->icon_timer != 0) | |
| 5170 g_source_remove(gtkconv->u.im->icon_timer); | |
| 5171 | |
| 5172 gtkconv->u.im->icon_timer = 0; | |
| 5173 } | |
| 5174 | |
| 5175 static gboolean | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5176 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv) |
| 4359 | 5177 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5178 GaimGtkConversation *gtkconv; |
| 4359 | 5179 static GtkWidget *menu = NULL; |
| 5180 GtkWidget *button; | |
| 5181 | |
| 5182 if (e->button != 3 || e->type != GDK_BUTTON_PRESS) | |
| 5183 return FALSE; | |
| 5184 | |
| 5185 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5186 | |
| 5187 /* | |
| 5188 * If a menu already exists, destroy it before creating a new one, | |
| 5189 * thus freeing-up the memory it occupied. | |
| 5190 */ | |
| 5191 if (menu != NULL) | |
| 5192 gtk_widget_destroy(menu); | |
| 5193 | |
| 5194 menu = gtk_menu_new(); | |
| 5195 | |
| 5196 if (gtkconv->u.im->icon_timer) { | |
| 5197 button = gtk_menu_item_new_with_label(_("Disable Animation")); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5198 g_signal_connect(G_OBJECT(button), "activate", |
| 4359 | 5199 G_CALLBACK(stop_anim), conv); |
| 5200 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 5201 gtk_widget_show(button); | |
| 5202 } | |
| 5203 else if (gtkconv->u.im->anim && | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5204 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))) |
| 4359 | 5205 { |
| 5206 button = gtk_menu_item_new_with_label(_("Enable Animation")); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5207 g_signal_connect(G_OBJECT(button), "activate", |
| 4359 | 5208 G_CALLBACK(start_anim), conv); |
| 5209 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 5210 gtk_widget_show(button); | |
| 5211 } | |
| 5212 | |
| 5213 button = gtk_menu_item_new_with_label(_("Hide Icon")); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5214 g_signal_connect_swapped(G_OBJECT(button), "activate", |
|
4515
9b9737a00a96
[gaim-migrate @ 4793]
Christian Hammond <chipx86@chipx86.com>
parents:
4513
diff
changeset
|
5215 G_CALLBACK(remove_icon), gtkconv); |
| 4359 | 5216 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
| 5217 gtk_widget_show(button); | |
| 5218 | |
| 5219 button = gtk_menu_item_new_with_label(_("Save Icon As...")); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5220 g_signal_connect(G_OBJECT(button), "activate", |
| 4359 | 5221 G_CALLBACK(gaim_gtk_save_icon_dialog), conv); |
| 5222 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | |
| 5223 gtk_widget_show(button); | |
| 5224 | |
| 5225 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); | |
| 5226 | |
| 5227 return TRUE; | |
| 5228 } | |
| 5229 | |
| 5230 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5231 gaim_gtkconv_update_buddy_icon(GaimConversation *conv) |
| 4359 | 5232 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5233 GaimGtkConversation *gtkconv; |
| 4359 | 5234 |
| 5235 char filename[256]; | |
| 5236 FILE *file; | |
| 5237 GError *err = NULL; | |
|
5462
8355eeeb52a3
[gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5238 gboolean animate = TRUE; |
| 4359 | 5239 |
| 6695 | 5240 GaimBuddy *buddy; |
| 4757 | 5241 |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5242 const void *data; |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5243 size_t len; |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5244 int delay; |
| 4359 | 5245 |
| 5246 GdkPixbuf *buf; | |
| 5247 | |
| 5248 GtkWidget *event; | |
| 5249 GtkWidget *frame; | |
| 5250 GdkPixbuf *scale; | |
| 5251 GdkPixmap *pm; | |
| 5252 GdkBitmap *bm; | |
| 5253 int sf = 0; | |
| 5254 | |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5255 g_return_if_fail(conv != NULL); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5256 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5257 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM); |
| 4359 | 5258 |
| 5259 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5260 | |
|
5462
8355eeeb52a3
[gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5261 if (gtkconv->u.im->icon_timer == 0 && gtkconv->u.im->icon != NULL) |
|
8355eeeb52a3
[gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5262 animate = FALSE; |
|
8355eeeb52a3
[gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5263 |
| 4359 | 5264 remove_icon(gtkconv); |
| 5265 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5266 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
| 4359 | 5267 return; |
| 5268 | |
| 5269 if (gaim_conversation_get_gc(conv) == NULL) | |
| 5270 return; | |
| 5271 | |
| 4793 | 5272 if(gtkconv->u.im->anim) |
| 5273 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); | |
| 5274 | |
| 4757 | 5275 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv), |
| 5276 gaim_conversation_get_name(conv))) != NULL) { | |
| 5277 char *file = gaim_buddy_get_setting(buddy, "buddy_icon"); | |
| 5278 if(file) { | |
| 5279 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(file, &err); | |
| 5280 g_free(file); | |
| 5281 } | |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5282 } |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5283 else |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5284 { |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5285 GaimBuddyIcon *icon = gaim_im_get_icon(GAIM_IM(conv)); |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5286 |
|
6877
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5287 if (icon == NULL) |
|
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5288 return; |
|
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5289 |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5290 data = gaim_buddy_icon_get_data(icon, &len); |
| 4757 | 5291 |
| 5292 /* this is such an evil hack, i don't know why i'm even considering it. | |
| 5293 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */ | |
| 5294 g_snprintf(filename, sizeof(filename), | |
| 5295 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d", | |
| 5296 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid()); | |
| 5297 | |
| 5298 if (!(file = fopen(filename, "wb"))) | |
| 5299 return; | |
| 5300 | |
| 5301 fwrite(data, 1, len, file); | |
| 5302 fclose(file); | |
| 5303 | |
| 5304 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err); | |
| 5305 /* make sure we remove the file as soon as possible */ | |
| 5306 unlink(filename); | |
| 5307 } | |
| 4359 | 5308 |
| 5309 if (err) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5310 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5311 "Buddy icon error: %s\n", err->message); |
| 4359 | 5312 g_error_free(err); |
| 5313 } | |
| 5314 | |
| 5315 | |
| 5316 if (!gtkconv->u.im->anim) | |
| 5317 return; | |
| 5318 | |
| 4793 | 5319 if(gtkconv->u.im->iter) |
| 5320 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 5321 | |
| 4359 | 5322 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) { |
| 5323 gtkconv->u.im->iter = NULL; | |
| 5324 delay = 0; | |
| 5325 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
| 5326 } else { | |
| 5327 gtkconv->u.im->iter = | |
| 5328 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); | |
| 5329 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
| 5330 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter); | |
| 5331 delay = delay / 10; | |
| 5332 } | |
| 5333 | |
| 5334 sf = SCALE(gtkconv->u.im->anim); | |
| 5335 scale = gdk_pixbuf_scale_simple(buf, | |
| 5336 MAX(gdk_pixbuf_get_width(buf) * sf / | |
| 5337 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
| 5338 MAX(gdk_pixbuf_get_height(buf) * sf / | |
| 5339 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
| 5340 GDK_INTERP_NEAREST); | |
| 5341 | |
| 5342 if (delay) | |
| 5343 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, | |
| 5344 conv); | |
| 5345 | |
| 5346 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 4793 | 5347 g_object_unref(G_OBJECT(scale)); |
| 4359 | 5348 |
| 5349 frame = gtk_frame_new(NULL); | |
| 5350 gtk_frame_set_shadow_type(GTK_FRAME(frame), | |
| 5351 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN)); | |
| 5352 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 5); | |
| 5353 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0); | |
| 5354 gtk_widget_show(frame); | |
| 5355 | |
| 5356 event = gtk_event_box_new(); | |
| 5357 gtk_container_add(GTK_CONTAINER(frame), event); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5358 g_signal_connect(G_OBJECT(event), "button-press-event", |
| 4359 | 5359 G_CALLBACK(icon_menu), conv); |
| 5360 gtk_widget_show(event); | |
| 5361 | |
| 4635 | 5362 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm); |
| 4359 | 5363 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf); |
| 5364 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon); | |
| 5365 gtk_widget_show(gtkconv->u.im->icon); | |
| 5366 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5367 if (!animate || |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5368 !gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons")) { |
| 4359 | 5369 stop_anim(NULL, conv); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5370 } |
| 4359 | 5371 |
| 4793 | 5372 g_object_unref(G_OBJECT(pm)); |
| 4359 | 5373 |
| 5374 if (bm) | |
| 4793 | 5375 g_object_unref(G_OBJECT(bm)); |
| 4359 | 5376 } |
| 5377 | |
| 5378 void | |
| 5379 gaim_gtkconv_update_font_buttons(void) | |
| 5380 { | |
| 5381 GList *l; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5382 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5383 GaimGtkConversation *gtkconv; |
| 4359 | 5384 |
| 5385 for (l = gaim_get_ims(); l != NULL; l = l->next) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5386 conv = (GaimConversation *)l->data; |
| 4359 | 5387 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5388 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5389 continue; |
| 5390 | |
| 5391 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5392 | |
| 5393 if (gtkconv->toolbar.bold != NULL) | |
| 5394 gtk_widget_set_sensitive(gtkconv->toolbar.bold, | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5395 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")); |
| 4359 | 5396 |
| 5397 if (gtkconv->toolbar.italic != NULL) | |
| 5398 gtk_widget_set_sensitive(gtkconv->toolbar.italic, | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5399 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")); |
| 4359 | 5400 |
| 5401 if (gtkconv->toolbar.underline != NULL) | |
| 5402 gtk_widget_set_sensitive(gtkconv->toolbar.underline, | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5403 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")); |
| 4359 | 5404 } |
| 5405 } | |
| 5406 | |
| 5407 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5408 gaim_gtkconv_update_font_colors(GaimConversation *conv) |
| 4421 | 5409 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5410 GaimGtkConversation *gtkconv; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5411 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5412 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5413 return; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5414 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5415 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5416 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5417 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5418 >kconv->fg_color); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5419 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5420 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5421 >kconv->bg_color); |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5422 } |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5423 |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5424 void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5425 gaim_gtkconv_update_font_face(GaimConversation *conv) |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5426 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5427 GaimGtkConversation *gtkconv; |
| 6141 | 5428 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5429 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5430 return; |
| 6141 | 5431 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5432 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
5433 |
| 6141 | 5434 strncpy(gtkconv->fontface, |
| 5435 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"), | |
| 5436 sizeof(gtkconv->fontface)); | |
| 4421 | 5437 } |
| 5438 | |
| 5439 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5440 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv) |
| 4359 | 5441 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5442 GaimPluginProtocolInfo *prpl_info = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5443 GaimWindow *win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5444 GaimGtkWindow *gtkwin = NULL; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5445 GaimGtkConversation *gtkconv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
5446 GaimConnection *gc; |
| 4359 | 5447 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5448 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5449 return; |
| 5450 | |
| 5451 gc = gaim_conversation_get_gc(conv); | |
| 5452 win = gaim_conversation_get_window(conv); | |
| 5453 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5454 | |
| 5455 if (win != NULL) | |
| 5456 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5457 | |
| 5458 if (gc == NULL) { | |
| 5459 gtk_widget_set_sensitive(gtkconv->send, FALSE); | |
| 5460 | |
|
4365
6e96ced6fb78
[gaim-migrate @ 4631]
Christian Hammond <chipx86@chipx86.com>
parents:
4364
diff
changeset
|
5461 if (win != NULL && gaim_window_get_active_conversation(win) == conv) { |
| 4359 | 5462 gtk_widget_set_sensitive(gtkwin->menu.insert_link, FALSE); |
| 5463 } | |
| 5464 } | |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
5465 else { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5466 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5467 |
| 4674 | 5468 gtk_widget_set_sensitive(gtkconv->send, TRUE); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5469 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5470 if (win != NULL) |
|
4365
6e96ced6fb78
[gaim-migrate @ 4631]
Christian Hammond <chipx86@chipx86.com>
parents:
4364
diff
changeset
|
5471 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
| 6629 | 5472 |
| 5473 gtk_widget_set_sensitive(gtkconv->toolbar.bgcolor, | |
| 5474 !(gc->flags & GAIM_CONNECTION_NO_BGCOLOR)); | |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
5475 } |
| 4359 | 5476 |
| 5477 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 5478 if (gc == NULL) { | |
| 5479 gtk_widget_set_sensitive(gtkconv->info, FALSE); | |
| 5480 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE); | |
| 5481 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE); | |
| 5482 gtk_widget_set_sensitive(gtkconv->u.im->add, FALSE); | |
| 5483 | |
| 5484 if (win != NULL && | |
| 5485 gaim_window_get_active_conversation(win) == conv) { | |
| 5486 | |
| 5487 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); | |
| 5488 } | |
| 5489 | |
| 5490 return; | |
| 5491 } | |
| 5492 | |
| 5493 gtk_widget_set_sensitive(gtkconv->info, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5494 (prpl_info->get_info != NULL)); |
| 4359 | 5495 |
| 5496 gtk_widget_set_sensitive(gtkconv->toolbar.image, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5497 (prpl_info->options & OPT_PROTO_IM_IMAGE)); |
| 4359 | 5498 |
| 5499 if (win != NULL && gaim_window_get_active_conversation(win) == conv) { | |
| 5500 gtk_widget_set_sensitive(gtkwin->menu.insert_image, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5501 (prpl_info->options & OPT_PROTO_IM_IMAGE)); |
| 4359 | 5502 } |
| 5503 | |
| 5504 gtk_widget_set_sensitive(gtkconv->u.im->warn, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5505 (prpl_info->warn != NULL)); |
| 4359 | 5506 |
| 5507 gtk_widget_set_sensitive(gtkconv->u.im->block, | |
| 6760 | 5508 (prpl_info->add_deny != NULL)); |
| 4359 | 5509 |
| 5510 update_convo_add_button(conv); | |
| 5511 } | |
| 5512 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 5513 if (gc == NULL) { | |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5514 if (gtkconv->u.chat->whisper != NULL) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5515 gtk_widget_set_sensitive(gtkconv->u.chat->whisper, FALSE); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5516 |
| 4359 | 5517 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE); |
| 5518 | |
| 5519 return; | |
| 5520 } | |
| 5521 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5522 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->chat_send != NULL)); |
| 4359 | 5523 |
| 5524 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); | |
| 5525 /* gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); */ | |
| 5526 | |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5527 if (gtkconv->u.chat->whisper != NULL) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5528 gtk_widget_set_sensitive(gtkconv->u.chat->whisper, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5529 (prpl_info->chat_whisper != NULL)); |
| 4359 | 5530 |
| 5531 gtk_widget_set_sensitive(gtkconv->u.chat->invite, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5532 (prpl_info->chat_invite != NULL)); |
| 4359 | 5533 } |
| 5534 } | |
| 5535 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5536 GaimWindow * |
| 4359 | 5537 gaim_gtkwin_get_at_xy(int x, int y) |
| 5538 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5539 GaimWindow *win = NULL; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5540 GaimGtkWindow *gtkwin; |
| 4359 | 5541 GdkWindow *gdkwin; |
| 5542 GList *l; | |
| 5543 | |
| 5544 gdkwin = gdk_window_at_pointer(&x, &y); | |
| 5545 | |
| 5546 if (gdkwin) | |
| 5547 gdkwin = gdk_window_get_toplevel(gdkwin); | |
| 5548 | |
| 5549 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5550 win = (GaimWindow *)l->data; |
| 4359 | 5551 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5552 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5553 continue; |
| 5554 | |
| 5555 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5556 | |
| 5557 if (gdkwin == gtkwin->window->window) | |
| 5558 return win; | |
| 5559 } | |
| 5560 | |
| 5561 return NULL; | |
| 5562 } | |
| 5563 | |
| 5564 int | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5565 gaim_gtkconv_get_tab_at_xy(GaimWindow *win, int x, int y) |
| 4359 | 5566 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5567 GaimGtkWindow *gtkwin; |
| 4359 | 5568 GList *l; |
| 5569 gint nb_x, nb_y, x_rel, y_rel; | |
| 5570 GtkNotebook *notebook; | |
| 5571 GtkWidget *tab; | |
| 5572 gint i, page_num = 0; | |
| 5573 gboolean first_visible = TRUE; | |
| 5574 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5575 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5576 return -1; |
| 5577 | |
| 5578 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5579 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 5580 | |
| 5581 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 5582 x_rel = x - nb_x; | |
| 5583 y_rel = y - nb_y; | |
| 5584 | |
| 5585 for (l = gaim_window_get_conversations(win), i = 0; | |
| 5586 l != NULL; | |
| 5587 l = l->next, i++) { | |
| 5588 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5589 GaimConversation *conv = l->data; |
| 4359 | 5590 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
| 5591 | |
| 5592 if (!GTK_WIDGET_MAPPED(tab)) | |
| 5593 continue; | |
| 5594 | |
| 5595 if (first_visible) { | |
| 5596 first_visible = FALSE; | |
| 5597 | |
| 5598 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x; | |
| 5599 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y; | |
| 5600 } | |
| 5601 | |
| 5602 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
| 5603 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
| 5604 | |
| 5605 if (tab->allocation.x <= x_rel) { | |
| 5606 if (tab->allocation.x + tab->allocation.width <= x_rel) | |
| 5607 page_num = i + 1; | |
| 5608 else | |
| 5609 page_num = i; | |
| 5610 } | |
| 5611 else | |
| 5612 break; | |
| 5613 } | |
| 5614 else { | |
| 5615 if (tab->allocation.y <= y_rel) { | |
| 5616 if (tab->allocation.y + tab->allocation.height <= y_rel) | |
| 5617 page_num = i + 1; | |
| 5618 else | |
| 5619 page_num = i; | |
| 5620 } | |
| 5621 else | |
| 5622 break; | |
| 5623 } | |
| 5624 } | |
| 5625 | |
| 5626 if (i == gaim_window_get_conversation_count(win) + 1) | |
| 5627 return -1; | |
| 5628 | |
| 5629 return page_num; | |
| 5630 } | |
| 5631 | |
| 5632 int | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5633 gaim_gtkconv_get_dest_tab_at_xy(GaimWindow *win, int x, int y) |
| 4359 | 5634 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5635 GaimGtkWindow *gtkwin; |
| 4359 | 5636 GList *l; |
| 5637 gint nb_x, nb_y, x_rel, y_rel; | |
| 5638 GtkNotebook *notebook; | |
| 5639 GtkWidget *tab; | |
| 5640 gint i, page_num = 0; | |
| 5641 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5642 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5643 return -1; |
| 5644 | |
| 5645 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5646 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 5647 | |
| 5648 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 5649 x_rel = x - nb_x; | |
| 5650 y_rel = y - nb_y; | |
| 5651 | |
| 5652 for (l = gaim_window_get_conversations(win), i = 0; | |
| 5653 l != NULL; | |
| 5654 l = l->next, i++) { | |
| 5655 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5656 GaimConversation *conv = l->data; |
| 4359 | 5657 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
| 5658 | |
| 5659 if (!GTK_WIDGET_MAPPED(tab)) | |
| 5660 continue; | |
| 5661 | |
| 5662 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
| 5663 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
| 5664 | |
| 5665 if (tab->allocation.x <= x_rel) { | |
| 5666 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel) | |
| 5667 page_num = i + 1; | |
| 5668 else | |
| 5669 page_num = i; | |
| 5670 } | |
| 5671 else | |
| 5672 break; | |
| 5673 } | |
| 5674 else { | |
| 5675 if (tab->allocation.y <= y_rel) { | |
| 5676 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel) | |
| 5677 page_num = i + 1; | |
| 5678 else | |
| 5679 page_num = i; | |
| 5680 } | |
| 5681 else | |
| 5682 break; | |
| 5683 } | |
| 5684 } | |
| 5685 | |
| 5686 if (i == gaim_window_get_conversation_count(win) + 1) | |
| 5687 return -1; | |
| 5688 | |
| 5689 return page_num; | |
| 5690 } | |
|
4940
3708545afe42
[gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents:
4939
diff
changeset
|
5691 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5692 static void |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5693 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5694 gpointer data) |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5695 { |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5696 if (value) |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5697 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5698 GDK_Escape, 0, TRUE); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5699 else |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5700 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5701 GDK_W, GDK_CONTROL_MASK, TRUE); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5702 } |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5703 |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5704 static void |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5705 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
|
5706 gpointer data) |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5707 { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5708 GList *l; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5709 GaimConversation *conv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5710 GaimGtkConversation *gtkconv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5711 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5712 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5713 conv = (GaimConversation *)l->data; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5714 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5715 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5716 continue; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5717 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5718 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5719 |
| 6440 | 5720 if (value) { |
| 5721 update_tab_icon(conv); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5722 gtk_widget_show(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5723 gtk_widget_show(gtkconv->menu_icon); |
| 6440 | 5724 } |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5725 else { |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5726 gtk_widget_hide(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5727 gtk_widget_hide(gtkconv->menu_icon); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5728 } |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5729 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5730 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5731 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5732 static void |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5733 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
|
5734 gpointer data) |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5735 { |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5736 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5737 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5738 GaimGtkConversation *gtkconv; |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5739 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5740 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5741 conv = (GaimConversation *)l->data; |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5742 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5743 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5744 continue; |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5745 |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5746 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5747 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5748 if (value) |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5749 gtk_widget_show(gtkconv->close); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5750 else |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5751 gtk_widget_hide(gtkconv->close); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5752 } |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5753 } |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5754 |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5755 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5756 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5757 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5758 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5759 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5760 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5761 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5762 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5763 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5764 conv = (GaimConversation *)l->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5765 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5766 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5767 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5768 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5769 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5770 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5771 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), (gboolean)value); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5772 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5773 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5774 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5775 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5776 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5777 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5778 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5779 #ifdef USE_GTKSPELL |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5780 GList *cl; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5781 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5782 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5783 GtkSpell *spell; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5784 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5785 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5786 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5787 conv = (GaimConversation *)cl->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5788 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5789 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5790 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5791 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5792 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5793 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5794 if (value) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5795 gtkspell_new_attach(GTK_TEXT_VIEW(gtkconv->entry), NULL, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5796 else { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5797 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry)); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5798 gtkspell_detach(spell); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5799 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5800 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5801 #endif |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5802 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5803 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5804 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5805 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5806 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5807 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5808 GList *cl; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5809 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5810 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5811 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5812 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5813 conv = (GaimConversation *)cl->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5814 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5815 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5816 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5817 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5818 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5819 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5820 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->imhtml), (gboolean)value); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5821 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5822 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5823 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5824 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5825 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5826 gpointer data) |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5827 { |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5828 GList *l; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5829 GtkPositionType pos; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5830 GaimWindow *win; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5831 GaimGtkWindow *gtkwin; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5832 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5833 pos = GPOINTER_TO_INT(value); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5834 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5835 for (l = gaim_get_windows(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5836 win = (GaimWindow *)l->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5837 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5838 if (!GAIM_IS_GTK_WINDOW(win)) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5839 continue; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5840 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5841 gtkwin = GAIM_GTK_WINDOW(win); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5842 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5843 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5844 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5845 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5846 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5847 static void |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5848 im_button_type_pref_cb(const char *name, GaimPrefType type, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5849 gpointer value, gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5850 { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5851 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5852 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5853 GaimGtkConversation *gtkconv; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5854 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5855 for (l = gaim_get_ims(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5856 conv = (GaimConversation *)l->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5857 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5858 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5859 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5860 } |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5861 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5862 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5863 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5864 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5865 gpointer value, gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5866 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5867 GList *l; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5868 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5869 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
|
5870 return; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5871 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5872 if (value) { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5873 for (l = gaim_get_ims(); l != NULL; l = l->next) |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5874 start_anim(NULL, (GaimConversation *)l->data); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5875 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5876 else { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5877 for (l = gaim_get_ims(); l != NULL; l = l->next) |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5878 stop_anim(NULL, (GaimConversation *)l->data); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5879 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5880 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5881 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5882 static void |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5883 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
|
5884 gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5885 { |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5886 GList *l; |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5887 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5888 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5889 GaimConversation *conv = l->data; |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5890 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5891 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5892 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon); |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5893 } |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5894 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5895 |
|
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5680
diff
changeset
|
5896 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5897 chat_button_type_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5898 gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5899 { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5900 GList *l; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5901 GaimConnection *g; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5902 GtkWidget *parent; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5903 GaimConversationType conv_type = GAIM_CONV_CHAT; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5904 GSList *bcs; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5905 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5906 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5907 GaimGtkWindow *gtkwin; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5908 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5909 for (l = gaim_connections_get_all(); l != NULL; l = l->next) { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5910 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5911 g = (GaimConnection *)l->data; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5912 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5913 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5914 conv = (GaimConversation *)bcs->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5915 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5916 if (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5917 continue; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5918 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5919 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5920 continue; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5921 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5922 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5923 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5924 parent = gtk_widget_get_parent(gtkconv->send); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5925 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5926 gtkconv->send = |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5927 gaim_gtk_change_text(_("Send"), |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5928 gtkconv->send, GAIM_STOCK_SEND, conv_type); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5929 gtkconv->u.chat->invite = |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5930 gaim_gtk_change_text(_("Invite"), |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5931 gtkconv->u.chat->invite, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5932 GAIM_STOCK_INVITE, conv_type); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5933 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5934 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5935 conv_type); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5936 gtk_box_pack_end(GTK_BOX(parent), gtkconv->u.chat->invite, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5937 FALSE, FALSE, 0); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5938 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5939 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->send, 0); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5940 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5941 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5942 G_CALLBACK(send_cb), conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5943 g_signal_connect(G_OBJECT(gtkconv->u.chat->invite), "clicked", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5944 G_CALLBACK(invite_cb), conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5945 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5946 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5947 GTK_RELIEF_NONE); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5948 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.chat->invite), |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5949 GTK_RELIEF_NONE); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5950 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5951 gaim_gtkconv_update_buttons_by_protocol(conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5952 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5953 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5954 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5955 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5956 void |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5957 gaim_gtk_conversations_init(void) |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5958 { |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5959 /* Conversations */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5960 gaim_prefs_add_none("/gaim/gtk/conversations"); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5961 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
|
5962 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5963 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5964 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5965 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5966 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5967 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5968 gaim_prefs_add_bool("/gaim/gtk/conversations/send_strikethrough", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5969 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5970 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5971 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5972 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
|
5973 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5974 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5975 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5976 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5977 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5978 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5979 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5980 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5981 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5982 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE); |
|
5743
af159a5bbaa0
[gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
5983 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5984 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5985 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5986 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5987 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5988 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5989 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
|
5990 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5991 /* Conversations -> Chat */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5992 gaim_prefs_add_none("/gaim/gtk/conversations/chat"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5993 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5994 GAIM_BUTTON_TEXT_IMAGE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5995 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5996 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
|
5997 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
|
5998 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5999 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6000 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6001 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6002 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6003 /* Conversations -> IM */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6004 gaim_prefs_add_none("/gaim/gtk/conversations/im"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6005 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6006 GAIM_BUTTON_TEXT_IMAGE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6007 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
|
6008 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
|
6009 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
|
6010 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
|
6011 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6012 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6013 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6014 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6015 /* Connect callbacks. */ |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
6016 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes", |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
6017 escape_closes_pref_cb, NULL); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
6018 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs", |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
6019 icons_on_tabs_pref_cb, NULL); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6020 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6021 close_on_tabs_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6022 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6023 show_smileys_pref_cb, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6024 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6025 show_timestamps_pref_cb, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6026 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6027 spellcheck_pref_cb, NULL); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6028 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6029 tab_side_pref_cb, NULL); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6030 |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
6031 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6032 /* IM callbacks */ |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6033 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6034 im_button_type_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6035 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6036 animate_buddy_icons_pref_cb, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6037 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6038 show_buddy_icons_pref_cb, NULL); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6039 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6040 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6041 /* Chat callbacks */ |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6042 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6043 chat_button_type_pref_cb, NULL); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6044 } |
