Mercurial > pidgin
annotate src/gtkconv.c @ 7751:d691cb95ee67
[gaim-migrate @ 8396]
Changes for the conversation "Find" dialog:
-Makes the window manager "X" work correctly when closing the dialog
-Added an "s" mnemonic for the search box
-Hitting enter now performs the default action (Find)
-The Find button grays and un-grays (aka sensitizes and desensitizes)
itself based on the presence or absence of text in the search box.
For this I moved a function from dialogs.c to util.[c|h]:
gaim_gtk_set_sensitive_if_input()
-HIGification suggestions from Steven Garrity:
1. Give the window a title ("Find") as is recommended by the HIG
(http://developer.gnome.org/projects/gup/hig/1.0/windows.html#window-properties).
2. Drop the phrase "Enter a search phrase" altogether. Since the text
box is already labeled (and if the window was labeled too), this phrase
is redundant. Removing it simplifies the visual appearance of the
window, and is one less thing to translate.
3.Change text box label from "Search term:" to "Search for:". This isn't
a big deal, but the Search window in GEdit uses "Search for:" (I
couldn't find much consistency anywhere else).
4.Move "Close" and "Find" buttons to be 12 pixels from the bottom and
right edges of the window, as recommended by the HIG
(http://developer.gnome.org/projects/gup/hig/1.0/layout.html#window-layout-spacing).
Also thanks to Nathan Fredrickson for writing a patch for Steven's
suggestions.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Thu, 04 Dec 2003 22:09:58 +0000 |
| parents | 8165ab2a00e6 |
| children | 8ebd9038ef62 |
| 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> |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
30 # ifdef _WIN32 |
|
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
31 # include "wspell.h" |
|
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
32 # endif |
| 4359 | 33 #endif |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
34 |
| 4359 | 35 #include <gdk/gdkkeysyms.h> |
| 6982 | 36 #include <locale.h> |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
37 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
38 #include "debug.h" |
| 6982 | 39 #include "imgstore.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
40 #include "log.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
41 #include "multi.h" |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
42 #include "notify.h" |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
43 #include "prefs.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
44 #include "prpl.h" |
| 6038 | 45 #include "request.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
46 #include "sound.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
47 #include "util.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
48 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
49 #include "dnd-hints.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
50 #include "gtkblist.h" |
| 5717 | 51 #include "gtkconv.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
52 #include "gtkimhtml.h" |
| 7431 | 53 #include "gtklog.h" |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
54 #include "gtkpounce.h" |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
55 #include "gtkprivacy.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
56 #include "gtkutils.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
57 #include "stock.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
58 |
| 5717 | 59 #include "ui.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
60 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
61 /* XXX */ |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
62 #include "gaim.h" |
| 4359 | 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); |
|
7242
59ffe137176d
[gaim-migrate @ 7817]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7222
diff
changeset
|
127 static void do_small(GtkWidget *smalltb, GaimGtkConversation *gtkconv); |
|
59ffe137176d
[gaim-migrate @ 7817]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7222
diff
changeset
|
128 static void do_big(GtkWidget *large, GaimGtkConversation *gtkconv); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
129 static void toggle_font(GtkWidget *font, GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
130 static void toggle_fg_color(GtkWidget *color, GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
131 static void toggle_bg_color(GtkWidget *color, GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
132 static void got_typing_keypress(GaimConversation *conv, gboolean first); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
133 static GList *generate_invite_user_names(GaimConnection *gc); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
134 static void add_chat_buddy_common(GaimConversation *conv, |
| 4359 | 135 const char *name, int pos); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
136 static void tab_complete(GaimConversation *conv); |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
137 static void update_typing_icon(GaimConversation *conv); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
138 static gboolean update_send_as_selection(GaimConvWindow *win); |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
139 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
|
140 static void save_convo(GtkWidget *save, GaimConversation *c); |
| 6440 | 141 static void update_tab_icon(GaimConversation *conv); |
| 4359 | 142 |
| 143 /************************************************************************** | |
| 144 * Callbacks | |
| 145 **************************************************************************/ | |
| 146 static void | |
| 6038 | 147 do_save_convo(GtkWidget *wid) |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
148 { |
| 6039 | 149 GaimConversation *c = g_object_get_data(G_OBJECT(GTK_FILE_SELECTION(wid)->ok_button), |
| 6038 | 150 "gaim_conversation"); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
151 const char *filename; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
152 FILE *fp; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
153 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
154 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
155 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
156 if (!((gaim_conversation_get_type(c) != GAIM_CONV_CHAT && |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
157 g_list_find(gaim_get_ims(), c)) || |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
158 (gaim_conversation_get_type(c) == GAIM_CONV_CHAT && |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
159 g_list_find(gaim_get_chats(), c)))) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
160 filename = NULL; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
161 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
162 gtk_widget_destroy(wid); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
163 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
164 if (filename == NULL) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
165 return; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
166 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
167 if ((fp = fopen(filename, "w+")) == NULL) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
168 return; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
169 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
170 fprintf(fp, "%s", c->history->str); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
171 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
172 fclose(fp); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
173 } |
|
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 static void |
| 6038 | 176 do_check_save_convo(GObject *obj, GtkWidget *wid) |
| 177 { | |
| 178 const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid)); | |
| 179 | |
| 180 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(wid))) | |
| 181 return; | |
| 182 | |
| 183 if(g_file_test(filename, G_FILE_TEST_EXISTS)){ | |
| 184 gaim_request_yes_no(NULL, NULL, _("That file already exists"), | |
| 185 _("Would you like to overwrite it?"), 1, wid, | |
| 186 G_CALLBACK(do_save_convo), NULL); | |
| 187 } | |
| 188 else | |
| 189 do_save_convo(wid); | |
| 190 } | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
191 |
| 6038 | 192 static void |
| 4359 | 193 do_insert_image_cb(GObject *obj, GtkWidget *wid) |
| 194 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
195 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
196 GaimGtkConversation *gtkconv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
197 GaimConvIm *im; |
| 6982 | 198 char *name, *filename; |
| 199 char *buf, *data; | |
| 200 size_t size; | |
| 201 GError *error; | |
| 4359 | 202 int id; |
| 203 | |
| 5106 | 204 conv = g_object_get_data(G_OBJECT(wid), "user_data"); |
| 4359 | 205 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
206 im = GAIM_CONV_IM(conv); |
| 6982 | 207 name = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(wid))); |
| 208 | |
| 209 if (!name) { | |
| 210 gtk_widget_destroy(gtkconv->dialogs.image); | |
| 211 gtkconv->dialogs.image = NULL; | |
| 212 return; | |
| 213 } | |
| 214 | |
| 215 if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(wid))) { | |
| 216 g_free(name); | |
| 4359 | 217 return; |
| 6982 | 218 } |
| 219 | |
| 220 gtk_widget_destroy(gtkconv->dialogs.image); | |
| 221 gtkconv->dialogs.image = NULL; | |
| 222 | |
| 223 if (!g_file_get_contents(name, &data, &size, &error)) { | |
| 224 gaim_notify_error(NULL, NULL, error->message, NULL); | |
| 225 | |
| 226 g_error_free(error); | |
| 227 g_free(name); | |
| 228 | |
| 4359 | 229 return; |
| 230 } | |
| 231 | |
| 232 filename = name; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
233 while (strchr(filename, '/')) |
| 4359 | 234 filename = strchr(filename, '/') + 1; |
| 235 | |
| 6982 | 236 id = gaim_imgstore_add(data, size, filename); |
| 237 g_free(data); | |
| 238 | |
| 239 if (!id) { | |
| 240 buf = g_strdup_printf(_("Failed to store image: %s\n"), name); | |
| 241 gaim_notify_error(NULL, NULL, buf, NULL); | |
| 242 | |
| 243 g_free(buf); | |
| 244 g_free(name); | |
| 245 | |
| 246 return; | |
| 247 } | |
| 248 | |
| 249 im->images = g_slist_append(im->images, GINT_TO_POINTER(id)); | |
| 250 | |
| 251 buf = g_strdup_printf("<IMG ID=\"%d\" SRC=\"file://%s\">", id, filename); | |
| 252 gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(gtkconv->entry_buffer), buf, -1); | |
| 4359 | 253 g_free(buf); |
| 5046 | 254 |
| 6982 | 255 g_free(name); |
| 256 | |
| 5046 | 257 set_toggle(gtkconv->toolbar.image, FALSE); |
| 4359 | 258 } |
| 259 | |
| 260 static gint | |
| 261 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d) | |
| 262 { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
263 GaimConvWindow *win = (GaimConvWindow *)d; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
264 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
265 gaim_conv_window_destroy(win); |
|
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
266 |
|
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
267 return TRUE; |
| 4359 | 268 } |
| 269 | |
| 270 static gint | |
| 271 close_conv_cb(GtkWidget *w, gpointer d) | |
| 272 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
273 GaimConversation *conv = (GaimConversation *)d; |
| 4359 | 274 |
| 275 gaim_conversation_destroy(conv); | |
|
4361
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
276 |
|
25d5b2a7545f
[gaim-migrate @ 4627]
Christian Hammond <chipx86@chipx86.com>
parents:
4360
diff
changeset
|
277 return TRUE; |
| 4359 | 278 } |
| 279 | |
|
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
280 /* Courtesy of Galeon! */ |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
281 static void |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
282 tab_close_button_state_changed_cb(GtkWidget *widget, GtkStateType prev_state) |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
283 { |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
284 if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE) |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
285 gtk_widget_set_state(widget, GTK_STATE_NORMAL); |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
286 } |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
287 |
| 4359 | 288 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
289 cancel_insert_image_cb(GtkWidget *unused, GaimGtkConversation *gtkconv) |
| 5106 | 290 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
291 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
292 FALSE); |
| 5106 | 293 |
| 294 if (gtkconv->dialogs.image) | |
| 295 gtk_widget_destroy(gtkconv->dialogs.image); | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
296 |
| 5106 | 297 gtkconv->dialogs.image = NULL; |
| 298 } | |
| 299 | |
| 300 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
301 insert_image_cb(GtkWidget *save, GaimConversation *conv) |
| 4359 | 302 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
303 GaimGtkConversation *gtkconv; |
| 4359 | 304 char buf[BUF_LONG]; |
| 305 GtkWidget *window; | |
| 306 | |
| 307 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 308 | |
| 5046 | 309 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))) { |
| 310 window = gtk_file_selection_new(_("Gaim - Insert Image")); | |
| 311 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); | |
| 312 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); | |
| 313 | |
| 5106 | 314 g_object_set_data(G_OBJECT(window), "user_data", conv); |
| 5046 | 315 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
| 316 "clicked", G_CALLBACK(do_insert_image_cb), window); | |
| 5106 | 317 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), |
| 318 "clicked", G_CALLBACK(cancel_insert_image_cb), gtkconv); | |
| 5046 | 319 |
| 320 gtk_widget_show(window); | |
| 5106 | 321 gtkconv->dialogs.image = window; |
| 5046 | 322 } else { |
| 323 gtk_widget_grab_focus(gtkconv->entry); | |
| 5106 | 324 if(gtkconv->dialogs.image) |
| 325 gtk_widget_destroy(gtkconv->dialogs.image); | |
| 326 gtkconv->dialogs.image = NULL; | |
| 5046 | 327 } |
| 4359 | 328 } |
| 329 | |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
330 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
331 insert_link_cb(GtkWidget *w, GaimConversation *conv) |
| 4359 | 332 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
333 GaimGtkConversation *gtkconv; |
| 4359 | 334 |
| 335 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 336 | |
| 337 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.link))) | |
| 338 show_insert_link(gtkconv->toolbar.link, conv); | |
| 339 else if (gtkconv->dialogs.link) | |
| 340 cancel_link(gtkconv->toolbar.link, conv); | |
| 341 else | |
| 342 gaim_gtk_advance_past(gtkconv, "<A HREF>", "</A>"); | |
| 343 | |
| 344 gtk_widget_grab_focus(gtkconv->entry); | |
| 345 } | |
| 346 | |
| 347 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
348 insert_smiley_cb(GtkWidget *smiley, GaimConversation *conv) |
| 4359 | 349 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
350 GaimGtkConversation *gtkconv; |
| 4359 | 351 |
| 352 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 353 | |
| 354 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley))) | |
| 355 show_smiley_dialog(conv, smiley); | |
| 356 else if (gtkconv->dialogs.smiley) | |
| 357 close_smiley_dialog(smiley, conv); | |
| 358 | |
| 359 gtk_widget_grab_focus(gtkconv->entry); | |
| 360 } | |
| 361 | |
| 362 static gboolean | |
| 363 entry_key_pressed_cb_1(GtkTextBuffer *buffer) | |
| 364 { | |
| 365 check_everything(buffer); | |
| 366 | |
| 367 return FALSE; | |
| 368 } | |
| 369 | |
| 370 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
371 send_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 372 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
373 GaimGtkConversation *gtkconv; |
| 4359 | 374 char *buf, *buf2; |
| 375 int limit; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
376 GaimConnection *gc = gaim_conversation_get_gc(conv); |
| 4359 | 377 |
| 378 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7715 | 379 |
| 380 if (gc && gc->flags & GAIM_CONNECTION_HTML) | |
| 381 buf2 = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry)); | |
| 382 else | |
| 383 buf2 = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry)); | |
| 7695 | 384 |
| 385 /* set_toggle(gtkconv->toolbar.bold, FALSE); | |
| 4685 | 386 set_toggle(gtkconv->toolbar.italic, FALSE); |
| 387 set_toggle(gtkconv->toolbar.underline, FALSE); | |
| 5049 | 388 set_toggle(gtkconv->toolbar.larger_size, FALSE); |
| 4685 | 389 set_toggle(gtkconv->toolbar.normal_size, FALSE); |
| 5049 | 390 set_toggle(gtkconv->toolbar.smaller_size,FALSE); |
| 4685 | 391 set_toggle(gtkconv->toolbar.font, FALSE); |
| 392 set_toggle(gtkconv->toolbar.fgcolor, FALSE); | |
| 393 set_toggle(gtkconv->toolbar.bgcolor, FALSE); | |
| 394 set_toggle(gtkconv->toolbar.link, FALSE); | |
| 7695 | 395 */ |
| 4359 | 396 gtk_widget_grab_focus(gtkconv->entry); |
| 397 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
398 limit = 32 * 1024; /* This will be done again in gaim_conv_im_send. *shrug* */ |
| 4359 | 399 |
| 400 buf = g_malloc(limit); | |
| 401 strncpy(buf, buf2, limit); | |
| 402 | |
| 403 g_free(buf2); | |
| 404 | |
| 405 if (strlen(buf) == 0) { | |
| 406 g_free(buf); | |
| 407 | |
| 408 return; | |
| 409 } | |
| 410 | |
| 411 buf2 = g_malloc(limit); | |
| 412 | |
| 6622 | 413 if (gc && gc->flags & GAIM_CONNECTION_HTML) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
414 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) { |
| 4359 | 415 g_snprintf(buf2, limit, "<B>%s</B>", buf); |
| 416 strcpy(buf, buf2); | |
| 417 } | |
| 418 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
419 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) { |
| 4359 | 420 g_snprintf(buf2, limit, "<I>%s</I>", buf); |
| 421 strcpy(buf, buf2); | |
| 422 } | |
| 423 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
424 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) { |
| 4359 | 425 g_snprintf(buf2, limit, "<U>%s</U>", buf); |
| 426 strcpy(buf, buf2); | |
| 427 } | |
| 428 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
429 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_strikethrough")) { |
| 4359 | 430 g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf); |
| 431 strcpy(buf, buf2); | |
| 432 } | |
| 433 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
434 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") || |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
435 gtkconv->has_font) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
436 |
| 4359 | 437 g_snprintf(buf2, limit, |
| 438 "<FONT FACE=\"%s\">%s</FONT>", gtkconv->fontface, buf); | |
| 439 strcpy(buf, buf2); | |
| 440 } | |
| 441 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
442 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) { |
| 4359 | 443 g_snprintf(buf2, limit, |
| 6141 | 444 "<FONT SIZE=\"%d\">%s</FONT>", |
| 445 gaim_prefs_get_int("/gaim/gtk/conversations/font_size"), | |
| 446 buf); | |
| 4359 | 447 strcpy(buf, buf2); |
| 448 } | |
| 449 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
450 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) { |
| 4359 | 451 g_snprintf(buf2, limit, |
| 452 "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>", | |
| 453 gtkconv->fg_color.red / 256, | |
| 454 gtkconv->fg_color.green / 256, | |
| 455 gtkconv->fg_color.blue / 256, buf); | |
| 456 strcpy(buf, buf2); | |
| 457 } | |
| 458 | |
| 6629 | 459 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) && gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) { |
| 4359 | 460 g_snprintf(buf2, limit, |
| 461 "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>", | |
| 4421 | 462 gtkconv->bg_color.red / 256, |
| 463 gtkconv->bg_color.green / 256, | |
| 464 gtkconv->bg_color.blue / 256, buf); | |
| 4359 | 465 strcpy(buf, buf2); |
| 466 } | |
| 467 } | |
| 468 | |
| 469 g_free(buf2); | |
| 470 | |
| 471 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
472 gaim_conv_im_send(GAIM_CONV_IM(conv), buf); |
| 4359 | 473 else |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
474 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf); |
| 4359 | 475 |
| 5629 | 476 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send")) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
477 gaim_conv_window_hide(gaim_conversation_get_window(conv)); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
478 |
| 4359 | 479 g_free(buf); |
| 480 | |
| 7695 | 481 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 482 } |
| 483 | |
| 484 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
485 add_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 486 { |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
487 GaimAccount *account; |
| 6695 | 488 GaimBuddy *b; |
| 4359 | 489 const char *name; |
| 490 | |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
491 account = gaim_conversation_get_account(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
492 name = gaim_conversation_get_name(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
493 b = gaim_find_buddy(account, name); |
| 4359 | 494 |
| 495 if (b != NULL) | |
| 5975 | 496 show_confirm_del(b); |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
497 else if (account != NULL && gaim_account_is_connected(account)) |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
498 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL); |
| 4359 | 499 |
| 500 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 501 } | |
| 502 | |
| 503 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
504 info_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 505 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
506 GaimGtkConversation *gtkconv; |
| 4359 | 507 |
| 508 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 509 | |
| 510 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
511 GaimGtkChatPane *gtkchat; |
| 4359 | 512 GtkTreeIter iter; |
| 513 GtkTreeModel *model; | |
| 514 GtkTreeSelection *sel; | |
| 515 const char *name; | |
| 516 | |
| 517 gtkchat = gtkconv->u.chat; | |
| 518 | |
| 519 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); | |
| 520 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); | |
| 521 | |
| 522 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
| 523 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1); | |
| 524 else | |
| 525 return; | |
| 526 | |
| 527 serv_get_info(gaim_conversation_get_gc(conv), (char *)name); | |
| 528 } | |
| 529 else { | |
| 530 serv_get_info(gaim_conversation_get_gc(conv), | |
| 531 (char *)gaim_conversation_get_name(conv)); | |
| 532 | |
| 533 gtk_widget_grab_focus(gtkconv->entry); | |
| 534 } | |
| 535 } | |
| 536 | |
| 537 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
538 warn_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 539 { |
| 540 show_warn_dialog(gaim_conversation_get_gc(conv), | |
| 541 (char *)gaim_conversation_get_name(conv)); | |
| 542 | |
| 543 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 544 } | |
| 545 | |
| 546 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
547 block_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 548 { |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
549 GaimAccount *account; |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
550 |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
551 account = gaim_conversation_get_account(conv); |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
552 |
|
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6291
diff
changeset
|
553 if (account != NULL && gaim_account_is_connected(account)) |
|
6399
d726a36628e8
[gaim-migrate @ 6904]
Christian Hammond <chipx86@chipx86.com>
parents:
6398
diff
changeset
|
554 gaim_gtk_request_add_block(account, gaim_conversation_get_name(conv)); |
| 4359 | 555 |
| 556 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 557 } | |
| 558 | |
| 559 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
560 do_invite(GtkWidget *w, int resp, InviteBuddyInfo *info) |
| 4359 | 561 { |
| 562 const char *buddy, *message; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
563 GaimGtkConversation *gtkconv; |
| 4359 | 564 |
| 565 gtkconv = GAIM_GTK_CONVERSATION(info->conv); | |
| 566 | |
| 567 if (resp == GTK_RESPONSE_OK) { | |
| 568 buddy = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(info->entry)->entry)); | |
| 569 message = gtk_entry_get_text(GTK_ENTRY(info->message)); | |
| 570 | |
| 4793 | 571 if (!g_ascii_strcasecmp(buddy, "")) { |
| 4359 | 572 g_free(info); |
| 573 | |
| 574 return; | |
| 575 } | |
| 576 | |
| 577 serv_chat_invite(gaim_conversation_get_gc(info->conv), | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
578 gaim_conv_chat_get_id(GAIM_CONV_CHAT(info->conv)), |
| 4359 | 579 message, buddy); |
| 580 } | |
| 581 | |
| 582 gtk_widget_destroy(invite_dialog); | |
| 583 invite_dialog = NULL; | |
| 584 | |
| 585 g_free(info); | |
| 586 } | |
| 587 | |
| 588 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
589 invite_cb(GtkWidget *widget, GaimConversation *conv) |
| 4359 | 590 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
591 InviteBuddyInfo *info = NULL; |
| 4359 | 592 |
| 593 if (invite_dialog == NULL) { | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
594 GaimConnection *gc; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
595 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
596 GaimGtkWindow *gtkwin; |
| 4359 | 597 GtkWidget *label; |
| 598 GtkWidget *vbox, *hbox; | |
| 599 GtkWidget *table; | |
| 600 GtkWidget *img; | |
| 601 | |
| 5024 | 602 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); |
| 4359 | 603 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
604 info = g_new0(InviteBuddyInfo, 1); |
| 4359 | 605 info->conv = conv; |
| 606 | |
| 607 gc = gaim_conversation_get_gc(conv); | |
| 608 win = gaim_conversation_get_window(conv); | |
| 609 gtkwin = GAIM_GTK_WINDOW(win); | |
| 610 | |
| 611 /* Create the new dialog. */ | |
| 612 invite_dialog = gtk_dialog_new_with_buttons( | |
| 613 _("Gaim - Invite Buddy Into Chat Room"), | |
| 614 GTK_WINDOW(gtkwin->window), | |
| 615 GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
| 616 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); | |
| 617 | |
| 618 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog), | |
| 619 GTK_RESPONSE_OK); | |
| 620 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6); | |
| 621 gtk_window_set_resizable(GTK_WINDOW(invite_dialog), FALSE); | |
| 622 gtk_dialog_set_has_separator(GTK_DIALOG(invite_dialog), FALSE); | |
| 623 | |
| 624 /* Setup the outside spacing. */ | |
| 625 vbox = GTK_DIALOG(invite_dialog)->vbox; | |
| 626 | |
| 627 gtk_box_set_spacing(GTK_BOX(vbox), 12); | |
| 628 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); | |
| 629 | |
| 630 /* Setup the inner hbox and put the dialog's icon in it. */ | |
| 631 hbox = gtk_hbox_new(FALSE, 12); | |
| 632 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 633 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 634 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 635 | |
| 636 /* Setup the right vbox. */ | |
| 637 vbox = gtk_vbox_new(FALSE, 0); | |
| 638 gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 639 | |
| 640 /* Put our happy label in it. */ | |
| 641 label = gtk_label_new(_("Please enter the name of the user you wish " | |
| 642 "to invite, along with an optional invite " | |
| 643 "message.")); | |
| 644 gtk_widget_set_size_request(label, 350, -1); | |
| 645 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 646 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 647 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 648 | |
| 649 /* hbox for the table, and to give it some spacing on the left. */ | |
| 650 hbox = gtk_hbox_new(FALSE, 6); | |
| 651 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
| 652 | |
| 653 /* Setup the table we're going to use to lay stuff out. */ | |
| 654 table = gtk_table_new(2, 2, FALSE); | |
| 655 gtk_table_set_row_spacings(GTK_TABLE(table), 6); | |
| 656 gtk_table_set_col_spacings(GTK_TABLE(table), 6); | |
| 657 gtk_container_set_border_width(GTK_CONTAINER(table), 12); | |
| 658 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | |
| 659 | |
| 660 /* Now the Buddy label */ | |
| 661 label = gtk_label_new(NULL); | |
| 662 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Buddy:")); | |
| 663 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 664 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | |
| 665 | |
| 666 /* Now the Buddy drop-down entry field. */ | |
| 667 info->entry = gtk_combo_new(); | |
| 668 gtk_combo_set_case_sensitive(GTK_COMBO(info->entry), FALSE); | |
| 669 gtk_entry_set_activates_default( | |
| 670 GTK_ENTRY(GTK_COMBO(info->entry)->entry), TRUE); | |
| 671 | |
| 672 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1); | |
| 673 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->entry); | |
| 674 | |
| 675 /* Fill in the names. */ | |
| 676 gtk_combo_set_popdown_strings(GTK_COMBO(info->entry), | |
| 677 generate_invite_user_names(gc)); | |
| 678 | |
| 679 | |
| 680 /* Now the label for "Message" */ | |
| 681 label = gtk_label_new(NULL); | |
| 682 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Message:")); | |
| 683 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 684 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); | |
| 685 | |
| 686 | |
| 687 /* And finally, the Message entry field. */ | |
| 688 info->message = gtk_entry_new(); | |
| 689 gtk_entry_set_activates_default(GTK_ENTRY(info->message), TRUE); | |
| 690 | |
| 691 gtk_table_attach_defaults(GTK_TABLE(table), info->message, 1, 2, 1, 2); | |
| 692 gtk_label_set_mnemonic_widget(GTK_LABEL(label), info->message); | |
| 693 | |
| 694 /* Connect the signals. */ | |
| 695 g_signal_connect(G_OBJECT(invite_dialog), "response", | |
| 696 G_CALLBACK(do_invite), info); | |
| 697 } | |
| 698 | |
| 699 gtk_widget_show_all(invite_dialog); | |
| 700 | |
| 701 if (info != NULL) | |
| 702 gtk_widget_grab_focus(GTK_COMBO(info->entry)->entry); | |
| 703 } | |
| 704 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
705 static void |
| 7748 | 706 menu_new_conv_cb(gpointer data, guint action, GtkWidget *widget) |
| 707 { | |
| 708 show_im_dialog(); | |
| 709 } | |
| 710 | |
| 711 static void | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
712 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
713 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
714 GaimConvWindow *win = (GaimConvWindow *)data; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
715 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
716 save_convo(NULL, gaim_conv_window_get_active_conversation(win)); |
|
5908
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 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
719 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
720 menu_view_log_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
721 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
722 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
723 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
724 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
725 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
726 |
| 7431 | 727 gaim_gtk_log_show((char *)gaim_conversation_get_name(conv), gaim_conversation_get_account(conv)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
728 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
729 |
| 7295 | 730 struct _search { |
| 731 GaimGtkConversation *gtkconv; | |
| 732 GtkWidget *entry; | |
| 733 }; | |
| 734 | |
| 735 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s) | |
| 736 { | |
| 737 switch (resp) { | |
| 738 case GTK_RESPONSE_OK: | |
|
7298
caca74a75e4c
[gaim-migrate @ 7882]
Christian Hammond <chipx86@chipx86.com>
parents:
7295
diff
changeset
|
739 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), gtk_entry_get_text(GTK_ENTRY(s->entry))); |
| 7295 | 740 break; |
| 7751 | 741 case GTK_RESPONSE_DELETE_EVENT: |
| 7295 | 742 case GTK_RESPONSE_CLOSE: |
|
7298
caca74a75e4c
[gaim-migrate @ 7882]
Christian Hammond <chipx86@chipx86.com>
parents:
7295
diff
changeset
|
743 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); |
| 7295 | 744 gtk_widget_destroy(s->gtkconv->dialogs.search); |
| 745 s->gtkconv->dialogs.search = NULL; | |
| 746 g_free(s); | |
| 747 break; | |
| 748 } | |
| 749 } | |
| 750 | |
| 751 static void | |
| 7751 | 752 menu_find_cb(gpointer data, guint action, GtkWidget *widget) |
| 7295 | 753 { |
| 754 GaimConvWindow *win = (GaimConvWindow *)data; | |
| 755 GaimConversation *conv = gaim_conv_window_get_active_conversation(win); | |
| 756 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); | |
| 757 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7751 | 758 GtkWidget *hbox; |
| 7295 | 759 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); |
| 760 GtkWidget *label, *entry; | |
| 761 struct _search *s; | |
| 762 | |
| 763 if (gtkconv->dialogs.search) | |
| 764 return; | |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
765 |
| 7751 | 766 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"), GTK_WINDOW(gtkwin->window), |
| 7295 | 767 GTK_DIALOG_DESTROY_WITH_PARENT, |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
768 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, |
| 7295 | 769 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); |
| 7751 | 770 gtk_dialog_set_default_response (GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK); |
| 7295 | 771 gtk_container_set_border_width (GTK_CONTAINER(gtkconv->dialogs.search), 6); |
| 772 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); | |
| 773 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE); | |
| 774 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12); | |
| 775 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6); | |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
776 |
| 7751 | 777 hbox = gtk_hbox_new(FALSE, 12); |
| 7295 | 778 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), hbox); |
| 779 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 780 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 7751 | 781 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK, FALSE); |
| 7295 | 782 |
| 783 label = gtk_label_new(NULL); | |
| 7751 | 784 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); |
| 7295 | 785 entry = gtk_entry_new(); |
| 7751 | 786 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); |
| 787 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(entry)); | |
| 788 g_signal_connect(G_OBJECT(entry), "changed", | |
| 789 G_CALLBACK(gaim_gtk_set_sensitive_if_input), | |
| 790 gtkconv->dialogs.search); | |
| 7295 | 791 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 792 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
| 793 | |
| 794 s = g_malloc(sizeof(struct _search)); | |
| 795 s->gtkconv = gtkconv; | |
| 796 s->entry = entry; | |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
797 |
| 7295 | 798 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", G_CALLBACK(do_search_cb), s); |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
799 |
| 7295 | 800 gtk_widget_show_all(gtkconv->dialogs.search); |
| 801 } | |
| 802 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
803 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
804 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
805 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
806 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
807 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
808 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
809 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
810 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
811 gaim_gtkpounce_dialog_show(gaim_conversation_get_account(conv), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
812 gaim_conversation_get_name(conv), NULL); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
813 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
814 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
815 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
816 menu_insert_link_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
817 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
818 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
819 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
820 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
821 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
822 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
823 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
824 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
825 show_insert_link(gtkconv->toolbar.link, 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 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
828 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
829 menu_insert_image_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
830 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
831 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
832 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
833 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
834 gtkconv = GAIM_GTK_CONVERSATION(gaim_conv_window_get_active_conversation(win)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
835 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
836 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
837 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))); |
|
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_alias_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
842 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
843 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
844 GaimConversation *conv; |
| 6695 | 845 GaimBuddy *b; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
846 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
847 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
848 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
849 b = gaim_find_buddy(gaim_conversation_get_account(conv), |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
850 gaim_conversation_get_name(conv)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
851 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
852 if (b != NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
853 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
854 alias_dialog_bud(b); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
855 #if 0 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
856 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
857 alias_dialog_chat((struct chat *)b); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
858 #endif |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
859 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
860 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
861 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
862 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
863 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
864 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
865 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
866 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
867 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
868 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
869 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
870 info_cb(NULL, conv); |
|
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 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
874 menu_invite_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
875 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
876 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
877 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
878 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
879 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
880 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
881 invite_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
882 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
883 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
884 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
885 menu_warn_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
886 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
887 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
888 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
889 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
890 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
891 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
892 warn_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
893 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
894 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
895 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
896 menu_block_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
897 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
898 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
899 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
900 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
901 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
902 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
903 block_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
904 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
905 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
906 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
907 menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
908 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
909 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
910 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
911 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
912 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
913 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
914 add_cb(NULL, conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
915 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
916 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
917 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
918 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
919 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
920 GaimConvWindow *win = (GaimConvWindow *)data; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
921 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
922 close_conv_cb(NULL, gaim_conv_window_get_active_conversation(win)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
923 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
924 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
925 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
926 menu_logging_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
927 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
928 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
929 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
930 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
931 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
932 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
933 if (conv == NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
934 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
935 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
936 gaim_conversation_set_logging(conv, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
937 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
938 } |
|
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 static void |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
941 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
942 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
943 GaimConvWindow *win = (GaimConvWindow *)data; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
944 GaimConversation *conv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
945 GaimGtkConversation *gtkconv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
946 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
947 conv = gaim_conv_window_get_active_conversation(win); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
948 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
949 if (conv == NULL) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
950 return; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
951 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
952 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
953 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
954 gtkconv->show_formatting_toolbar = |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
955 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
956 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
957 if (gtkconv->show_formatting_toolbar) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
958 gtk_widget_show(gtkconv->toolbar.toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
959 else |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
960 gtk_widget_hide(gtkconv->toolbar.toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
961 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
962 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
963 static void |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
964 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
965 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
966 GaimConvWindow *win = (GaimConvWindow *)data; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
967 GaimConversation *conv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
968 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
969 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
970 conv = gaim_conv_window_get_active_conversation(win); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
971 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
972 if (!conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
973 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
974 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
975 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
976 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
977 gtkconv->make_sound = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
978 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
|
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 void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
982 im_cb(GtkWidget *widget, GaimConversation *conv) |
|
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 GaimConversation *conv2; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
985 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
986 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
987 GaimAccount *account; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
988 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
989 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
990 GtkTreeSelection *sel; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
991 const char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
992 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
993 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
994 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
995 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
996 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
997 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
998 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
999 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1000 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
|
1001 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1002 return; |
|
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 if (*name == '@') name++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1005 if (*name == '%') name++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1006 if (*name == '+') name++; |
|
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 account = gaim_conversation_get_account(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1009 |
|
6640
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6629
diff
changeset
|
1010 conv2 = gaim_find_conversation_with_account(name, account); |
|
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6629
diff
changeset
|
1011 |
|
314111e7b601
[gaim-migrate @ 7165]
Christian Hammond <chipx86@chipx86.com>
parents:
6629
diff
changeset
|
1012 if (conv2 != NULL) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1013 gaim_conv_window_raise(gaim_conversation_get_window(conv2)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1014 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1015 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, name); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1016 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1017 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1018 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1019 ignore_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1020 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1021 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1022 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1023 GaimConvChat *chat; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1024 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1025 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1026 GtkTreeSelection *sel; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1027 const char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1028 int pos; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1029 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1030 chat = GAIM_CONV_CHAT(conv); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1031 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1032 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1033 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1034 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1035 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1036 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1037 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1038 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
|
1039 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1040 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1041 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1042 return; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1043 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1044 pos = g_list_index(gaim_conv_chat_get_users(chat), name); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1045 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1046 if (gaim_conv_chat_is_user_ignored(chat, name)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1047 gaim_conv_chat_unignore(chat, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1048 else |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1049 gaim_conv_chat_ignore(chat, name); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1050 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1051 add_chat_buddy_common(conv, name, pos); |
|
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 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1054 static void |
| 7398 | 1055 chat_do_im(GaimConversation *conv, const char *who) |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1056 { |
| 7398 | 1057 GaimPluginProtocolInfo *prpl_info = NULL; |
| 1058 char *real_who; | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1059 GaimConversation *conv2; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1060 GaimAccount *account; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1061 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1062 account = gaim_conversation_get_account(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1063 |
| 7398 | 1064 if(account && account->gc) |
| 1065 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(account->gc->prpl); | |
| 1066 | |
| 1067 if(prpl_info && prpl_info->get_cb_real_name) | |
| 1068 real_who = prpl_info->get_cb_real_name(account->gc, | |
| 1069 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); | |
| 1070 else | |
| 1071 real_who = g_strdup(who); | |
| 1072 | |
| 1073 if(!real_who) | |
| 1074 return; | |
| 1075 | |
| 1076 conv2 = gaim_find_conversation_with_account(real_who, account); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1077 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1078 if (conv2 != NULL) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1079 gaim_conv_window_show(gaim_conversation_get_window(conv2)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1080 else |
| 7398 | 1081 conv2 = gaim_conversation_new(GAIM_CONV_IM, account, real_who); |
| 1082 | |
| 1083 g_free(real_who); | |
| 1084 } | |
| 1085 | |
| 1086 static void | |
| 1087 menu_chat_im_cb(GtkWidget *w, GaimConversation *conv) | |
| 1088 { | |
| 1089 const char *who = g_object_get_data(G_OBJECT(w), "user_data"); | |
| 1090 | |
| 1091 chat_do_im(conv, who); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1092 } |
|
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 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1095 menu_chat_info_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1096 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1097 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1098 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1099 char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1100 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1101 gc = gaim_conversation_get_gc(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1102 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1103 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1104 if (gc != NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1105 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1106 |
|
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 * If there are special needs for getting info on users in |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1109 * buddy chat "rooms"... |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1110 */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1111 if (prpl_info->get_cb_info != NULL) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1112 prpl_info->get_cb_info(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1113 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1114 prpl_info->get_info(gc, who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1115 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1116 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1117 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1118 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1119 menu_chat_get_away_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1120 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1121 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1122 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1123 char *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1124 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1125 gc = gaim_conversation_get_gc(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1126 who = g_object_get_data(G_OBJECT(w), "user_data"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1127 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1128 if (gc != NULL) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1129 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
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 * 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
|
1133 */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1134 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1135 if (prpl_info->get_cb_away != NULL) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1136 prpl_info->get_cb_away(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1137 } |
|
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 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1140 static void |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1141 menu_chat_add_cb(GtkWidget *w, GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1142 { |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1143 GaimAccount *account; |
| 6695 | 1144 GaimBuddy *b; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1145 char *name; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1146 |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1147 account = gaim_conversation_get_account(conv); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1148 name = g_object_get_data(G_OBJECT(w), "user_data"); |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1149 b = gaim_find_buddy(account, name); |
|
5908
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 if (b != NULL) |
| 5975 | 1152 show_confirm_del(b); |
|
7060
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1153 else if (account != NULL && gaim_account_is_connected(account)) |
|
9946001989a3
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
1154 gaim_blist_request_add_buddy(account, name, NULL, NULL); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1155 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1156 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1157 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1158 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1159 static gint |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1160 right_click_chat_cb(GtkWidget *widget, GdkEventButton *event, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1161 GaimConversation *conv) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1162 { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1163 GaimPluginProtocolInfo *prpl_info = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1164 GaimGtkConversation *gtkconv; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1165 GaimGtkChatPane *gtkchat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1166 GaimConnection *gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1167 GaimAccount *account; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1168 GtkTreePath *path; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1169 GtkTreeIter iter; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1170 GtkTreeModel *model; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1171 GtkTreeViewColumn *column; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1172 gchar *who; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1173 int x, y; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1174 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1175 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1176 gtkchat = gtkconv->u.chat; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1177 account = gaim_conversation_get_account(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1178 gc = account->gc; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1179 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1180 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1181 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1182 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
|
1183 event->x, event->y, &path, &column, &x, &y); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1184 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1185 if (path == NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1186 return FALSE; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1187 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1188 if (gc != NULL) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1189 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1190 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1191 gtk_tree_selection_select_path(GTK_TREE_SELECTION( |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1192 gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1193 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1194 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1195 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
|
1196 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1197 if (*who == '@') who++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1198 if (*who == '%') who++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1199 if (*who == '+') who++; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1200 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1201 if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { |
| 7398 | 1202 chat_do_im(conv, who); |
| 1203 } else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1204 static GtkWidget *menu = NULL; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1205 GtkWidget *button; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1206 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1207 /* |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1208 * 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
|
1209 * thus freeing-up the memory it occupied. |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1210 */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1211 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1212 if (menu) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1213 gtk_widget_destroy(menu); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1214 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1215 menu = gtk_menu_new(); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1216 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1217 button = gtk_menu_item_new_with_label(_("IM")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1218 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1219 G_CALLBACK(menu_chat_im_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1220 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1221 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1222 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1223 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1224 if (gaim_conv_chat_is_user_ignored(GAIM_CONV_CHAT(conv), who)) |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1225 button = gtk_menu_item_new_with_label(_("Un-Ignore")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1226 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1227 button = gtk_menu_item_new_with_label(_("Ignore")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1228 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1229 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1230 G_CALLBACK(ignore_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1231 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1232 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1233 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1234 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1235 if (gc && prpl_info->get_info) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1236 button = gtk_menu_item_new_with_label(_("Info")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1237 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1238 G_CALLBACK(menu_chat_info_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1239 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1240 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1241 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1242 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1243 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1244 if (gc && prpl_info->get_cb_away) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1245 button = gtk_menu_item_new_with_label(_("Get Away Msg")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1246 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1247 G_CALLBACK(menu_chat_get_away_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1248 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1249 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1250 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1251 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1252 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1253 /* Added by Jonas <jonas@birme.se> */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1254 if (gc) { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1255 if (gaim_find_buddy(gc->account, who)) |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1256 button = gtk_menu_item_new_with_label(_("Remove")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1257 else |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1258 button = gtk_menu_item_new_with_label(_("Add")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1259 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1260 g_signal_connect(G_OBJECT(button), "activate", |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1261 G_CALLBACK(menu_chat_add_cb), conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1262 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1263 g_object_set_data(G_OBJECT(button), "user_data", who); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1264 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1265 gtk_widget_show(button); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1266 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1267 /* End Jonas */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1268 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1269 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1270 event->button, event->time); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1271 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1272 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1273 return TRUE; |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1274 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
1275 |
| 4359 | 1276 static gboolean |
| 1277 entry_key_pressed_cb_2(GtkWidget *entry, GdkEventKey *event, gpointer data) | |
| 1278 { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1279 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1280 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1281 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1282 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1283 |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1284 conv = (GaimConversation *)data; |
| 4359 | 1285 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 1286 win = gaim_conversation_get_window(conv); | |
| 4362 | 1287 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 1288 |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
1289 if (event->keyval == GDK_Page_Up) { |
| 4359 | 1290 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); |
| 1291 | |
| 1292 if (!(event->state & GDK_CONTROL_MASK)) | |
| 1293 gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml)); | |
| 1294 } | |
| 1295 else if (event->keyval == GDK_Page_Down) { | |
| 1296 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1297 | |
| 1298 if (!(event->state & GDK_CONTROL_MASK)) | |
| 1299 gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml)); | |
| 1300 } | |
| 6033 | 1301 else if (event->keyval == GDK_F2) { |
| 1302 | |
| 1303 gaim_prefs_set_bool("/gaim/gtk/conversations/show_timestamps", | |
| 1304 !gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); | |
| 4359 | 1305 } |
| 1306 else if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) { | |
| 1307 if ((event->state & GDK_CONTROL_MASK) && | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1308 gaim_prefs_get_bool("/gaim/gtk/conversations/ctrl_enter_sends")) { |
| 4359 | 1309 |
| 1310 send_cb(NULL, conv); | |
| 1311 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1312 | |
| 1313 return TRUE; | |
| 1314 } | |
| 1315 else if (!(event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK)) && | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1316 gaim_prefs_get_bool("/gaim/gtk/conversations/enter_sends")) { |
| 4359 | 1317 |
| 1318 send_cb(NULL, conv); | |
| 1319 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1320 | |
| 1321 return TRUE; | |
| 1322 } | |
| 1323 | |
| 1324 return FALSE; | |
| 1325 } | |
| 6014 | 1326 else if ((event->state & GDK_CONTROL_MASK) && (event->keyval == 'm' || |
| 1327 event->keyval == 'M')) { | |
| 4359 | 1328 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); |
| 1329 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, "\n", 1); | |
| 1330 } | |
| 1331 else if (event->state & GDK_CONTROL_MASK) { | |
| 1332 switch (event->keyval) { | |
| 1333 case GDK_Up: | |
| 1334 if (!conv->send_history) | |
| 1335 break; | |
| 1336 | |
| 1337 if (!conv->send_history->prev) { | |
| 1338 GtkTextIter start, end; | |
| 1339 | |
| 1340 if (conv->send_history->data) | |
| 1341 g_free(conv->send_history->data); | |
| 1342 | |
| 1343 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
| 1344 &start); | |
| 1345 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end); | |
| 1346 | |
| 1347 conv->send_history->data = | |
| 1348 gtk_text_buffer_get_text(gtkconv->entry_buffer, | |
| 1349 &start, &end, FALSE); | |
| 1350 } | |
| 1351 | |
| 1352 if (conv->send_history->next && | |
| 1353 conv->send_history->next->data) { | |
| 1354 | |
| 1355 conv->send_history = conv->send_history->next; | |
| 1356 gtk_text_buffer_set_text(gtkconv->entry_buffer, | |
| 1357 conv->send_history->data, -1); | |
| 1358 } | |
| 1359 | |
| 1360 break; | |
| 1361 | |
| 1362 case GDK_Down: | |
| 1363 if (!conv->send_history) | |
| 1364 break; | |
| 1365 | |
| 1366 if (conv->send_history->prev) { | |
| 1367 conv->send_history = conv->send_history->prev; | |
| 1368 | |
| 1369 if (conv->send_history->data) | |
| 1370 gtk_text_buffer_set_text(gtkconv->entry_buffer, | |
| 1371 conv->send_history->data, -1); | |
| 1372 } | |
| 1373 | |
| 1374 break; | |
| 1375 } | |
| 1376 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1377 if (gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")) { |
| 4359 | 1378 switch (event->keyval) { |
| 1379 case 'i': | |
| 1380 case 'I': | |
| 4685 | 1381 set_toggle(gtkconv->toolbar.italic, |
| 4359 | 1382 !gtk_toggle_button_get_active( |
| 1383 GTK_TOGGLE_BUTTON(gtkconv->toolbar.italic))); | |
| 1384 | |
| 1385 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1386 "key_press_event"); | |
| 1387 break; | |
| 1388 | |
| 1389 case 'u': /* ctrl-u is GDK_Clear, which clears the line. */ | |
| 1390 case 'U': | |
| 4685 | 1391 set_toggle(gtkconv->toolbar.underline, |
| 4359 | 1392 !gtk_toggle_button_get_active( |
| 1393 GTK_TOGGLE_BUTTON(gtkconv->toolbar.underline))); | |
| 1394 | |
| 1395 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1396 "key_press_event"); | |
| 1397 break; | |
| 1398 | |
| 1399 case 'b': /* ctrl-b is GDK_Left, which moves backwards. */ | |
| 1400 case 'B': | |
| 4685 | 1401 set_toggle(gtkconv->toolbar.bold, |
| 4359 | 1402 !gtk_toggle_button_get_active( |
| 1403 GTK_TOGGLE_BUTTON(gtkconv->toolbar.bold))); | |
| 1404 | |
| 1405 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1406 "key_press_event"); | |
| 1407 break; | |
| 6014 | 1408 |
| 4359 | 1409 case '-': |
| 6015 | 1410 set_toggle(gtkconv->toolbar.smaller_size, |
| 1411 !gtk_toggle_button_get_active( | |
| 1412 GTK_TOGGLE_BUTTON(gtkconv->toolbar.smaller_size))); | |
| 6014 | 1413 |
| 4359 | 1414 g_signal_stop_emission_by_name(G_OBJECT(entry), |
| 1415 "key_press_event"); | |
| 1416 break; | |
| 1417 | |
| 1418 case '=': | |
| 1419 case '+': | |
| 6015 | 1420 set_toggle(gtkconv->toolbar.larger_size, |
| 1421 !gtk_toggle_button_get_active( | |
| 1422 GTK_TOGGLE_BUTTON(gtkconv->toolbar.larger_size))); | |
| 4359 | 1423 |
| 1424 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1425 "key_press_event"); | |
| 1426 break; | |
| 1427 | |
| 1428 case '0': | |
| 7740 | 1429 /*set_toggle(gtkconv->toolbar.normal_size, |
| 4685 | 1430 !gtk_toggle_button_get_active( |
| 1431 GTK_TOGGLE_BUTTON(gtkconv->toolbar.normal_size))); | |
| 4359 | 1432 |
| 1433 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 7740 | 1434 "key_press_event"); */ |
| 4359 | 1435 break; |
| 1436 | |
| 1437 case 'f': | |
| 1438 case 'F': | |
| 4685 | 1439 set_toggle(gtkconv->toolbar.font, |
| 4359 | 1440 !gtk_toggle_button_get_active( |
| 4685 | 1441 GTK_TOGGLE_BUTTON(gtkconv->toolbar.font))); |
| 4359 | 1442 |
| 1443 g_signal_stop_emission_by_name(G_OBJECT(entry), | |
| 1444 "key_press_event"); | |
| 1445 break; | |
| 1446 } | |
| 1447 } | |
| 1448 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1449 if (gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")) { |
| 4359 | 1450 char buf[7]; |
| 1451 | |
| 1452 *buf = '\0'; | |
| 1453 | |
| 1454 switch (event->keyval) { | |
| 1455 case '1': strcpy(buf, ":-)"); break; | |
| 1456 case '2': strcpy(buf, ":-("); break; | |
| 1457 case '3': strcpy(buf, ";-)"); break; | |
| 1458 case '4': strcpy(buf, ":-P"); break; | |
| 1459 case '5': strcpy(buf, "=-O"); break; | |
| 1460 case '6': strcpy(buf, ":-*"); break; | |
| 1461 case '7': strcpy(buf, ">:o"); break; | |
| 1462 case '8': strcpy(buf, "8-)"); break; | |
| 1463 case '!': strcpy(buf, ":-$"); break; | |
| 1464 case '@': strcpy(buf, ":-!"); break; | |
| 1465 case '#': strcpy(buf, ":-["); break; | |
| 1466 case '$': strcpy(buf, "O:-)"); break; | |
| 1467 case '%': strcpy(buf, ":-/"); break; | |
| 1468 case '^': strcpy(buf, ":'("); break; | |
| 1469 case '&': strcpy(buf, ":-X"); break; | |
| 1470 case '*': strcpy(buf, ":-D"); break; | |
| 1471 default: break; | |
| 1472 } | |
| 1473 | |
| 1474 if (*buf) { | |
| 1475 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 1476 buf, -1); | |
| 1477 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1478 } | |
| 1479 } | |
| 1480 | |
| 1481 if (event->keyval == 'l') { | |
| 1482 gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml)); | |
| 1483 g_string_free(conv->history, TRUE); | |
| 1484 conv->history = g_string_new(""); | |
| 1485 } | |
| 1486 else if (event->keyval == 'z') { | |
| 1487 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 5133 | 1488 |
| 1489 gtk_window_iconify(GTK_WINDOW(gtkwin->window)); | |
| 4359 | 1490 } |
| 1491 else if (event->keyval == '[') { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1492 gaim_conv_window_switch_conversation(win, |
| 4359 | 1493 gaim_conversation_get_index(conv) - 1); |
| 1494 | |
| 1495 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1496 } | |
| 1497 else if (event->keyval == ']') { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1498 gaim_conv_window_switch_conversation(win, |
| 4359 | 1499 gaim_conversation_get_index(conv) + 1); |
| 1500 | |
| 1501 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1502 } | |
| 1503 else if (event->keyval == GDK_Tab) { | |
| 1504 move_next_tab(conv); | |
| 1505 | |
| 1506 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1507 | |
| 1508 return TRUE; | |
| 1509 } | |
| 1510 } | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1511 else if (event->keyval == GDK_Tab && |
| 4359 | 1512 gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1513 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/tab_completion")) { |
| 4359 | 1514 |
| 1515 tab_complete(conv); | |
| 1516 | |
| 1517 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1518 | |
| 1519 return TRUE; | |
| 1520 } | |
| 1521 else if ((event->state & GDK_MOD1_MASK) && | |
| 1522 event->keyval > '0' && event->keyval <= '9') { | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1523 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1524 gaim_conv_window_switch_conversation(win, event->keyval - '1'); |
| 4359 | 1525 |
| 1526 g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event"); | |
| 1527 } | |
| 1528 | |
| 1529 return FALSE; | |
| 1530 } | |
| 1531 | |
| 1532 /* | |
| 1533 * NOTE: | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1534 * 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
|
1535 * further. I have no idea *why* we need this, but we do ... It |
| 4359 | 1536 * 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
|
1537 * going all the way down to the notebook. I suspect a bug in |
| 4359 | 1538 * GtkTextView, but I'm not ready to point any fingers yet. |
| 1539 */ | |
| 1540 static gboolean | |
| 1541 entry_stop_rclick_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) | |
| 1542 { | |
| 1543 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) { | |
| 1544 /* Right single click */ | |
| 1545 g_signal_stop_emission_by_name(G_OBJECT(widget), "button_press_event"); | |
| 1546 | |
| 1547 return TRUE; | |
| 1548 } | |
| 1549 | |
| 1550 return FALSE; | |
| 1551 } | |
| 1552 | |
| 6057 | 1553 static gboolean |
| 1554 refocus_entry_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) | |
| 1555 { | |
| 1556 GaimGtkConversation *gtkconv = data; | |
| 1557 | |
| 1558 gtk_widget_grab_focus(gtkconv->entry); | |
| 1559 | |
| 1560 return FALSE; | |
| 1561 } | |
| 1562 | |
| 4359 | 1563 static void |
| 4673 | 1564 menu_conv_sel_send_cb(GObject *m, gpointer data) |
| 4359 | 1565 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1566 GaimConvWindow *win = g_object_get_data(m, "user_data"); |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
1567 GaimAccount *account = g_object_get_data(m, "gaim_account"); |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1568 GaimConversation *conv; |
| 4359 | 1569 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1570 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 1571 |
| 4491 | 1572 gaim_conversation_set_account(conv, account); |
| 4359 | 1573 } |
| 1574 | |
| 1575 static void | |
| 1576 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position, | |
| 1577 gchar *new_text, gint new_text_length, gpointer user_data) | |
| 1578 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1579 GaimConversation *conv = (GaimConversation *)user_data; |
| 4359 | 1580 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1581 g_return_if_fail(conv != NULL); |
| 4359 | 1582 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1583 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 1584 return; |
| 1585 | |
| 1586 got_typing_keypress(conv, (gtk_text_iter_is_start(position) && | |
| 1587 gtk_text_iter_is_end(position))); | |
| 1588 } | |
| 1589 | |
| 1590 static void | |
| 1591 delete_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *start_pos, | |
| 1592 GtkTextIter *end_pos, gpointer user_data) | |
| 1593 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1594 GaimConversation *conv = (GaimConversation *)user_data; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1595 GaimConvIm *im; |
| 4359 | 1596 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1597 g_return_if_fail(conv != NULL); |
| 4359 | 1598 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
1599 if (!gaim_prefs_get_bool("/core/conversations/im/send_typing")) |
| 4359 | 1600 return; |
| 1601 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1602 im = GAIM_CONV_IM(conv); |
| 4359 | 1603 |
| 1604 if (gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) { | |
| 1605 | |
| 1606 /* We deleted all the text, so turn off typing. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1607 if (gaim_conv_im_get_type_again_timeout(im)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1608 gaim_conv_im_stop_type_again_timeout(im); |
| 4359 | 1609 |
| 1610 serv_send_typing(gaim_conversation_get_gc(conv), | |
| 6695 | 1611 gaim_conversation_get_name(conv), |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
1612 GAIM_NOT_TYPING); |
| 4359 | 1613 } |
| 1614 else { | |
| 1615 /* We're deleting, but not all of it, so it counts as typing. */ | |
| 1616 got_typing_keypress(conv, FALSE); | |
| 1617 } | |
| 1618 } | |
| 1619 | |
| 1620 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1621 notebook_init_grab(GaimGtkWindow *gtkwin, GtkWidget *widget) |
| 4359 | 1622 { |
| 1623 static GdkCursor *cursor = NULL; | |
| 1624 | |
| 1625 gtkwin->in_drag = TRUE; | |
| 1626 | |
| 1627 if (gtkwin->drag_leave_signal) { | |
| 1628 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1629 gtkwin->drag_leave_signal); | |
| 1630 | |
| 1631 gtkwin->drag_leave_signal = 0; | |
| 1632 } | |
| 1633 | |
| 1634 if (cursor == NULL) | |
| 1635 cursor = gdk_cursor_new(GDK_FLEUR); | |
| 1636 | |
| 1637 /* Grab the pointer */ | |
| 1638 gtk_grab_add(gtkwin->notebook); | |
|
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1639 #ifndef _WIN32 |
|
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1640 /* 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
|
1641 always be true after a button press. */ |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1642 if (!gdk_pointer_is_grabbed()) |
|
5114
e245e686f62f
[gaim-migrate @ 5477]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
5106
diff
changeset
|
1643 #endif |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1644 gdk_pointer_grab(gtkwin->notebook->window, FALSE, |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1645 GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1646 NULL, cursor, GDK_CURRENT_TIME); |
| 4359 | 1647 } |
| 1648 | |
| 1649 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1650 notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1651 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1652 GaimGtkWindow *gtkwin; |
| 4359 | 1653 |
| 1654 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1655 | |
| 1656 /* | |
| 1657 * Make sure the user moved the mouse far enough for the | |
| 1658 * drag to be initiated. | |
| 1659 */ | |
| 1660 if (gtkwin->in_predrag) { | |
| 1661 if (e->x_root < gtkwin->drag_min_x || | |
| 1662 e->x_root >= gtkwin->drag_max_x || | |
| 1663 e->y_root < gtkwin->drag_min_y || | |
| 1664 e->y_root >= gtkwin->drag_max_y) { | |
| 1665 | |
| 1666 gtkwin->in_predrag = FALSE; | |
| 1667 notebook_init_grab(gtkwin, widget); | |
| 1668 } | |
| 1669 } | |
| 1670 else { /* Otherwise, draw the arrows. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1671 GaimConvWindow *dest_win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1672 GaimGtkWindow *dest_gtkwin; |
| 4359 | 1673 GtkNotebook *dest_notebook; |
| 1674 GtkWidget *tab, *last_vis_tab = NULL; | |
| 1675 gint nb_x, nb_y, page_num, i, last_vis_tab_loc = -1; | |
| 1676 gint arrow1_x, arrow1_y, arrow2_x, arrow2_y; | |
| 1677 gboolean horiz_tabs = FALSE, tab_found = FALSE; | |
| 1678 GList *l; | |
| 1679 | |
| 1680 /* Get the window that the cursor is over. */ | |
| 1681 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); | |
| 1682 | |
| 1683 if (dest_win == NULL) { | |
| 1684 dnd_hints_hide_all(); | |
| 1685 | |
| 1686 return TRUE; | |
| 1687 } | |
| 1688 | |
| 1689 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); | |
| 1690 | |
| 1691 dest_notebook = GTK_NOTEBOOK(dest_gtkwin->notebook); | |
| 1692 | |
| 1693 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y); | |
| 1694 | |
| 1695 arrow1_x = arrow2_x = nb_x; | |
| 1696 arrow1_y = arrow2_y = nb_y; | |
| 1697 | |
| 1698 page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
| 1699 e->x_root, e->y_root); | |
| 1700 | |
| 1701 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP || | |
| 1702 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) { | |
| 1703 | |
| 1704 horiz_tabs = TRUE; | |
| 1705 } | |
| 1706 | |
| 1707 /* Find out where to put the arrows. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1708 for (l = gaim_conv_window_get_conversations(dest_win), i = 0; |
| 4359 | 1709 l != NULL; |
| 1710 l = l->next, i++) { | |
| 1711 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1712 GaimConversation *conv = l->data; |
| 4359 | 1713 |
| 1714 tab = GAIM_GTK_CONVERSATION(conv)->tabby; | |
| 1715 | |
| 1716 /* | |
| 1717 * If this is the correct tab, record the positions | |
| 1718 * for the arrows. | |
| 1719 */ | |
| 1720 if (i == page_num) { | |
| 1721 if (horiz_tabs) { | |
| 1722 arrow1_x = arrow2_x = nb_x + tab->allocation.x; | |
| 1723 arrow1_y = nb_y + tab->allocation.y; | |
| 1724 arrow2_y = nb_y + tab->allocation.y + | |
| 1725 tab->allocation.height; | |
| 1726 } | |
| 1727 else { | |
| 1728 arrow1_x = nb_x + tab->allocation.x; | |
| 1729 arrow2_x = nb_x + tab->allocation.x + | |
| 1730 tab->allocation.width; | |
| 1731 arrow1_y = arrow2_y = nb_y + tab->allocation.y; | |
| 1732 } | |
| 1733 | |
| 1734 tab_found = TRUE; | |
| 1735 break; | |
| 1736 } | |
| 1737 else { /* Keep track of the right-most tab that we see. */ | |
| 1738 if (horiz_tabs && tab->allocation.x > last_vis_tab_loc) { | |
| 1739 last_vis_tab = tab; | |
| 1740 last_vis_tab_loc = tab->allocation.x; | |
| 1741 } | |
| 1742 else if (!horiz_tabs && tab->allocation.y > last_vis_tab_loc) { | |
| 1743 last_vis_tab = tab; | |
| 1744 last_vis_tab_loc = tab->allocation.y; | |
| 1745 } | |
| 1746 } | |
| 1747 } | |
| 1748 | |
| 1749 /* | |
| 1750 * If we didn't find the tab, then we'll just place the | |
| 1751 * arrows to the right/bottom of the last visible tab. | |
| 1752 */ | |
| 1753 if (!tab_found && last_vis_tab) { | |
| 1754 if (horiz_tabs) { | |
| 1755 arrow1_x = arrow2_x = nb_x + last_vis_tab->allocation.x + | |
| 1756 last_vis_tab->allocation.width; | |
| 1757 arrow1_y = nb_y + last_vis_tab->allocation.y; | |
| 1758 arrow2_y = nb_y + last_vis_tab->allocation.y + | |
| 1759 last_vis_tab->allocation.height; | |
| 1760 } | |
| 1761 else { | |
| 1762 arrow1_x = nb_x + last_vis_tab->allocation.x; | |
| 1763 arrow2_x = nb_x + last_vis_tab->allocation.x + | |
| 1764 last_vis_tab->allocation.width; | |
| 1765 arrow1_y = arrow2_y = nb_y + last_vis_tab->allocation.y + | |
| 1766 last_vis_tab->allocation.height; | |
| 1767 } | |
| 1768 } | |
| 1769 | |
| 1770 if (horiz_tabs) { | |
| 1771 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y); | |
| 1772 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y); | |
| 1773 } | |
| 1774 else { | |
| 1775 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y); | |
| 1776 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y); | |
| 1777 } | |
| 1778 } | |
| 1779 | |
| 1780 return TRUE; | |
| 1781 } | |
| 1782 | |
| 1783 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1784 notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, GaimConvWindow *win) |
| 4359 | 1785 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1786 GaimGtkWindow *gtkwin; |
| 4359 | 1787 |
| 1788 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1789 | |
| 1790 if (gtkwin->in_drag) | |
| 1791 return FALSE; | |
| 1792 | |
| 1793 if (e->x_root < gtkwin->drag_min_x || | |
| 1794 e->x_root >= gtkwin->drag_max_x || | |
| 1795 e->y_root < gtkwin->drag_min_y || | |
| 1796 e->y_root >= gtkwin->drag_max_y) { | |
| 1797 | |
| 1798 gtkwin->in_predrag = FALSE; | |
| 1799 notebook_init_grab(gtkwin, widget); | |
| 1800 } | |
| 1801 | |
| 1802 return TRUE; | |
| 1803 } | |
| 1804 | |
| 1805 /* | |
| 1806 * THANK YOU GALEON! | |
| 1807 */ | |
| 1808 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1809 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1810 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1811 GaimGtkWindow *gtkwin; |
| 4359 | 1812 gint nb_x, nb_y, x_rel, y_rel; |
| 1813 GList *l; | |
| 1814 int tab_clicked; | |
| 1815 | |
| 1816 if (e->button != 1 || e->type != GDK_BUTTON_PRESS) | |
| 1817 return FALSE; | |
| 1818 | |
| 1819 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1820 | |
| 1821 if (gtkwin->in_drag) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1822 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1823 "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
|
1824 return TRUE; |
| 4359 | 1825 } |
| 1826 | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1827 /* |
| 4359 | 1828 * Make sure a tab was actually clicked. The arrow buttons |
| 1829 * mess things up. | |
| 1830 */ | |
| 1831 tab_clicked = gaim_gtkconv_get_tab_at_xy(win, e->x_root, e->y_root); | |
| 1832 | |
| 1833 if (tab_clicked == -1) | |
| 1834 return FALSE; | |
| 1835 | |
| 1836 /* | |
| 1837 * Get the relative position of the press event, with regards to | |
| 1838 * the position of the notebook. | |
| 1839 */ | |
| 1840 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 1841 | |
| 1842 x_rel = e->x_root - nb_x; | |
| 1843 y_rel = e->y_root - nb_y; | |
| 1844 | |
| 1845 /* Reset the min/max x/y */ | |
| 1846 gtkwin->drag_min_x = 0; | |
| 1847 gtkwin->drag_min_y = 0; | |
| 1848 gtkwin->drag_max_x = 0; | |
| 1849 gtkwin->drag_max_y = 0; | |
| 1850 | |
| 1851 /* Find out which tab was dragged. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1852 for (l = gaim_conv_window_get_conversations(win); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1853 GaimConversation *conv = l->data; |
| 4359 | 1854 GtkWidget *tab = GAIM_GTK_CONVERSATION(conv)->tabby; |
| 1855 | |
| 1856 if (!GTK_WIDGET_VISIBLE(tab)) | |
| 1857 continue; | |
| 1858 | |
| 1859 if (tab->allocation.x > x_rel || tab->allocation.y > y_rel) | |
| 1860 break; | |
| 1861 | |
| 1862 /* Save the borders of the tab. */ | |
| 1863 gtkwin->drag_min_x = tab->allocation.x + nb_x; | |
| 1864 gtkwin->drag_min_y = tab->allocation.y + nb_y; | |
| 1865 gtkwin->drag_max_x = tab->allocation.width + gtkwin->drag_min_x; | |
| 1866 gtkwin->drag_max_y = tab->allocation.height + gtkwin->drag_min_y; | |
| 1867 } | |
| 1868 | |
| 1869 /* Make sure the click occurred in the tab. */ | |
| 1870 if (e->x_root < gtkwin->drag_min_x || | |
| 1871 e->x_root >= gtkwin->drag_max_x || | |
| 1872 e->y_root < gtkwin->drag_min_y || | |
| 1873 e->y_root >= gtkwin->drag_max_y) { | |
| 1874 | |
| 1875 return FALSE; | |
| 1876 } | |
| 1877 | |
| 1878 gtkwin->in_predrag = TRUE; | |
| 1879 | |
| 1880 /* Connect the new motion signals. */ | |
| 1881 gtkwin->drag_motion_signal = | |
| 1882 g_signal_connect(G_OBJECT(widget), "motion_notify_event", | |
| 1883 G_CALLBACK(notebook_motion_cb), win); | |
| 1884 | |
| 1885 gtkwin->drag_leave_signal = | |
| 1886 g_signal_connect(G_OBJECT(widget), "leave_notify_event", | |
| 1887 G_CALLBACK(notebook_leave_cb), win); | |
| 1888 | |
| 1889 return FALSE; | |
| 1890 } | |
| 1891 | |
| 1892 static gboolean | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1893 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, GaimConvWindow *win) |
| 4359 | 1894 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1895 GaimConvWindow *dest_win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1896 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1897 GaimGtkWindow *dest_gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1898 GaimConversation *conv; |
| 4359 | 1899 GtkNotebook *dest_notebook; |
| 1900 gint dest_page_num; | |
| 1901 | |
| 1902 /* | |
| 1903 * Don't check to make sure that the event's window matches the | |
| 1904 * widget's, because we may be getting an event passed on from the | |
| 1905 * close button. | |
| 1906 */ | |
| 1907 if (e->button != 1 && e->type != GDK_BUTTON_RELEASE) | |
| 1908 return FALSE; | |
| 1909 | |
| 1910 if (gdk_pointer_is_grabbed()) { | |
| 1911 gdk_pointer_ungrab(GDK_CURRENT_TIME); | |
| 1912 gtk_grab_remove(widget); | |
| 1913 } | |
| 1914 | |
| 1915 gtkwin = GAIM_GTK_WINDOW(win); | |
| 1916 | |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1917 if (!gtkwin->in_predrag && !gtkwin->in_drag) |
|
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1918 return FALSE; |
| 4359 | 1919 |
| 1920 /* Disconnect the motion signal. */ | |
| 1921 if (gtkwin->drag_motion_signal) { | |
| 1922 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1923 gtkwin->drag_motion_signal); | |
| 1924 | |
| 1925 gtkwin->drag_motion_signal = 0; | |
| 1926 } | |
| 1927 | |
| 1928 /* | |
| 1929 * If we're in a pre-drag, we'll also need to disconnect the leave | |
| 1930 * signal. | |
| 1931 */ | |
| 1932 if (gtkwin->in_predrag) { | |
| 1933 gtkwin->in_predrag = FALSE; | |
| 1934 | |
| 1935 if (gtkwin->drag_leave_signal) { | |
| 1936 g_signal_handler_disconnect(G_OBJECT(widget), | |
| 1937 gtkwin->drag_leave_signal); | |
| 1938 | |
| 1939 gtkwin->drag_leave_signal = 0; | |
| 1940 } | |
| 1941 } | |
| 1942 | |
| 1943 /* If we're not in drag... */ | |
| 1944 /* We're perfectly normal people! */ | |
|
4803
6f04901ef729
[gaim-migrate @ 5123]
Christian Hammond <chipx86@chipx86.com>
parents:
4793
diff
changeset
|
1945 if (!gtkwin->in_drag) |
| 4359 | 1946 return FALSE; |
| 1947 | |
| 1948 gtkwin->in_drag = FALSE; | |
| 1949 | |
| 1950 dnd_hints_hide_all(); | |
| 1951 | |
|
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1952 dest_win = gaim_gtkwin_get_at_xy(e->x_root, e->y_root); |
| 4359 | 1953 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1954 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 1955 |
| 1956 if (dest_win == NULL) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1957 if (gaim_conv_window_get_conversation_count(win) < 2) |
| 4359 | 1958 return FALSE; |
| 1959 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1960 if (gaim_conv_window_get_conversation_count(win) > 1) { |
| 4359 | 1961 /* Make a new window to stick this to. */ |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1962 GaimConvWindow *new_win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1963 GaimGtkWindow *new_gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
1964 GaimGtkConversation *gtkconv; |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1965 gint win_width, win_height; |
| 5121 | 1966 |
| 1967 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4359 | 1968 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1969 new_win = gaim_conv_window_new(); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1970 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1971 gaim_conv_window_add_conversation(new_win, |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1972 gaim_conv_window_remove_conversation(win, |
|
5139
d0182ae31ab8
[gaim-migrate @ 5503]
Christian Hammond <chipx86@chipx86.com>
parents:
5133
diff
changeset
|
1973 gaim_conversation_get_index(conv))); |
| 5121 | 1974 |
|
4748
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1975 new_gtkwin = GAIM_GTK_WINDOW(new_win); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1976 |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1977 gtk_window_get_size(GTK_WINDOW(new_gtkwin->window), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1978 &win_width, &win_height); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1979 |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1980 gtk_window_move(GTK_WINDOW(new_gtkwin->window), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1981 e->x_root - (win_width / 2), |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1982 e->y_root - (win_height / 2)); |
|
d3c09ddfd3aa
[gaim-migrate @ 5063]
Christian Hammond <chipx86@chipx86.com>
parents:
4736
diff
changeset
|
1983 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
1984 gaim_conv_window_show(new_win); |
| 4359 | 1985 } |
| 1986 | |
| 1987 return TRUE; | |
| 1988 } | |
| 1989 | |
|
4369
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1990 dest_gtkwin = GAIM_GTK_WINDOW(dest_win); |
|
7e1fb422e5fd
[gaim-migrate @ 4635]
Christian Hammond <chipx86@chipx86.com>
parents:
4368
diff
changeset
|
1991 |
| 4359 | 1992 /* Get the destination notebook. */ |
| 1993 dest_notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 1994 | |
| 1995 /* Get the destination page number. */ | |
| 1996 dest_page_num = gaim_gtkconv_get_dest_tab_at_xy(dest_win, | |
| 7143 | 1997 e->x_root, e->y_root); |
| 4359 | 1998 |
| 1999 if (win == dest_win) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2000 gaim_conv_window_move_conversation(win, |
| 4359 | 2001 gaim_conversation_get_index(conv), dest_page_num); |
| 2002 } | |
| 2003 else { | |
| 2004 size_t pos; | |
| 2005 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2006 gaim_conv_window_remove_conversation(win, |
| 4359 | 2007 gaim_conversation_get_index(conv)); |
| 2008 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2009 pos = gaim_conv_window_add_conversation(dest_win, conv); |
| 4359 | 2010 |
|
5901
74e273e22f94
[gaim-migrate @ 6333]
Christian Hammond <chipx86@chipx86.com>
parents:
5881
diff
changeset
|
2011 if (pos != dest_page_num) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2012 gaim_conv_window_move_conversation(dest_win, pos, dest_page_num); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2013 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2014 gaim_conv_window_switch_conversation(dest_win, dest_page_num); |
| 4359 | 2015 } |
| 2016 | |
| 2017 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); | |
| 2018 | |
| 2019 return TRUE; | |
| 2020 } | |
| 2021 | |
| 7143 | 2022 static GdkPixbuf *get_tab_icon(GaimConversation *conv) |
| 2023 { | |
| 2024 GaimAccount *account = gaim_conversation_get_account(conv); | |
| 2025 const char *name = gaim_conversation_get_name(conv); | |
| 2026 GdkPixbuf *status = NULL; | |
| 2027 | |
| 2028 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 2029 GaimBuddy *b = gaim_find_buddy(account, name); | |
| 2030 if (b != NULL) { | |
| 2031 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, | |
| 2032 GAIM_STATUS_ICON_SMALL); | |
| 2033 } | |
| 2034 } | |
| 2035 | |
| 2036 if (!status) { | |
| 2037 GdkPixbuf *pixbuf; | |
| 2038 pixbuf = create_prpl_icon(account); | |
| 2039 | |
| 2040 if (pixbuf) { | |
| 2041 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15, | |
| 2042 GDK_INTERP_BILINEAR); | |
| 2043 g_object_unref(pixbuf); | |
| 2044 } | |
| 2045 } | |
| 2046 return status; | |
| 2047 } | |
| 2048 | |
| 4359 | 2049 static void |
| 2050 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, | |
| 2051 gpointer user_data) | |
| 2052 { | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
2053 GaimPluginProtocolInfo *prpl_info = NULL; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2054 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2055 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2056 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2057 GaimGtkWindow *gtkwin; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2058 GaimConnection *gc; |
| 7222 | 2059 GdkPixbuf *window_icon = NULL; |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2060 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2061 win = (GaimConvWindow *)user_data; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2062 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2063 conv = gaim_conv_window_get_conversation_at(win, page_num); |
|
4598
a064e437d5eb
[gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents:
4596
diff
changeset
|
2064 |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2065 g_return_if_fail(conv != NULL); |
|
4598
a064e437d5eb
[gaim-migrate @ 4883]
Christian Hammond <chipx86@chipx86.com>
parents:
4596
diff
changeset
|
2066 |
| 4359 | 2067 gc = gaim_conversation_get_gc(conv); |
| 2068 gtkwin = GAIM_GTK_WINDOW(win); | |
| 2069 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2070 | |
| 2071 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE); | |
| 2072 | |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2073 if (gc != NULL) { |
|
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2074 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
2075 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2076 } |
|
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2077 |
| 4359 | 2078 /* Update the menubar */ |
| 2079 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2080 gtk_widget_show(gtkwin->menu.view_log); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2081 |
|
5929
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
2082 if (gc && prpl_info->options & OPT_PROTO_IM_IMAGE) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2083 gtk_widget_show(gtkwin->menu.insert_image); |
|
5929
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
2084 gtk_widget_set_sensitive(gtkconv->toolbar.image, TRUE); |
|
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
2085 |
|
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
2086 } |
|
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
2087 else { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2088 gtk_widget_hide(gtkwin->menu.insert_image); |
|
5929
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
2089 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); |
|
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
2090 } |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2091 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2092 gtk_widget_show(gtkwin->menu.add_pounce); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2093 gtk_widget_show(gtkwin->menu.get_info); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2094 gtk_widget_show(gtkwin->menu.warn); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2095 gtk_widget_show(gtkwin->menu.block); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2096 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2097 if (gaim_find_buddy(gaim_conversation_get_account(conv), |
| 7143 | 2098 gaim_conversation_get_name(conv)) == NULL) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2099 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2100 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2101 gtk_widget_hide(gtkwin->menu.remove); |
|
5911
865f235ffaf0
[gaim-migrate @ 6343]
Christian Hammond <chipx86@chipx86.com>
parents:
5908
diff
changeset
|
2102 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2103 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2104 else { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2105 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2106 gtk_widget_hide(gtkwin->menu.add); |
|
5911
865f235ffaf0
[gaim-migrate @ 6343]
Christian Hammond <chipx86@chipx86.com>
parents:
5908
diff
changeset
|
2107 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2108 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2109 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2110 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2111 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2112 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2113 gtk_widget_hide(gtkwin->menu.invite); |
| 4359 | 2114 |
| 2115 if (gtkwin->menu.send_as != NULL) | |
| 4685 | 2116 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2117 |
| 7143 | 2118 if (gtkconv->u.im->anim) { |
| 7219 | 2119 window_icon = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); |
| 2120 g_object_ref(window_icon); | |
| 7143 | 2121 } else { |
| 7219 | 2122 window_icon = get_tab_icon(conv); |
| 7143 | 2123 } |
| 4359 | 2124 } |
|
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2125 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2126 gtk_widget_show(gtkwin->menu.invite); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2127 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2128 gtk_widget_hide(gtkwin->menu.view_log); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2129 gtk_widget_hide(gtkwin->menu.insert_image); |
|
5929
b85e88d3fa5f
[gaim-migrate @ 6369]
Christian Hammond <chipx86@chipx86.com>
parents:
5911
diff
changeset
|
2130 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2131 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2132 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2133 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2134 gtk_widget_hide(gtkwin->menu.add_pounce); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2135 gtk_widget_hide(gtkwin->menu.get_info); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2136 gtk_widget_hide(gtkwin->menu.warn); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2137 gtk_widget_hide(gtkwin->menu.block); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2138 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2139 if (gaim_find_chat(gaim_conversation_get_gc(conv), |
| 7143 | 2140 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv))) == NULL) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2141 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2142 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2143 gtk_widget_hide(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2144 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2145 else { |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2146 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2147 gtk_widget_hide(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2148 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2149 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2150 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2151 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2152 |
| 4359 | 2153 if (gtkwin->menu.send_as != NULL) |
|
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2154 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 7219 | 2155 window_icon = get_tab_icon(conv); |
| 4359 | 2156 } |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2157 |
| 4736 | 2158 update_typing_icon(conv); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2159 |
| 4359 | 2160 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging), |
| 7143 | 2161 gaim_conversation_is_logging(conv)); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2162 |
| 4359 | 2163 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds), |
| 7143 | 2164 gtkconv->make_sound); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2165 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2166 gtk_check_menu_item_set_active( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2167 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2168 gtkconv->show_formatting_toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2169 |
| 4359 | 2170 gtk_widget_grab_focus(gtkconv->entry); |
| 4681 | 2171 |
| 7219 | 2172 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); |
| 2173 g_object_unref(G_OBJECT(window_icon)); | |
| 4965 | 2174 gtk_window_set_title(GTK_WINDOW(gtkwin->window), |
| 7143 | 2175 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
| 4359 | 2176 } |
| 2177 | |
| 2178 /************************************************************************** | |
| 2179 * Utility functions | |
| 2180 **************************************************************************/ | |
| 2181 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2182 do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv) |
| 4359 | 2183 { |
| 7695 | 2184 gtk_imhtml_toggle_bold(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 2185 gtk_widget_grab_focus(gtkconv->entry); |
| 2186 } | |
| 2187 | |
| 2188 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2189 do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv) |
| 4359 | 2190 { |
| 7695 | 2191 gtk_imhtml_toggle_italic(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 2192 gtk_widget_grab_focus(gtkconv->entry); |
| 2193 } | |
| 2194 | |
| 2195 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2196 do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv) |
| 4359 | 2197 { |
| 7695 | 2198 gtk_imhtml_toggle_underline(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 2199 gtk_widget_grab_focus(gtkconv->entry); |
| 2200 } | |
| 2201 | |
| 2202 static void | |
|
7242
59ffe137176d
[gaim-migrate @ 7817]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7222
diff
changeset
|
2203 do_small(GtkWidget *smalltb, GaimGtkConversation *gtkconv) |
| 4359 | 2204 { |
| 7740 | 2205 gtk_imhtml_font_shrink(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 2206 gtk_widget_grab_focus(gtkconv->entry); |
| 2207 } | |
| 2208 | |
| 2209 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2210 do_big(GtkWidget *large, GaimGtkConversation *gtkconv) |
| 4359 | 2211 { |
| 7740 | 2212 gtk_imhtml_font_grow(GTK_IMHTML(gtkconv->entry)); |
| 4359 | 2213 gtk_widget_grab_focus(gtkconv->entry); |
| 2214 } | |
| 2215 | |
| 2216 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2217 toggle_font(GtkWidget *font, GaimConversation *conv) |
| 4359 | 2218 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2219 GaimGtkConversation *gtkconv; |
| 4359 | 2220 |
| 2221 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2222 | |
| 7717 | 2223 show_font_dialog(conv, font); |
| 4359 | 2224 } |
| 2225 | |
| 2226 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2227 toggle_fg_color(GtkWidget *color, GaimConversation *conv) |
| 4359 | 2228 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2229 GaimGtkConversation *gtkconv; |
| 4359 | 2230 |
| 2231 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2232 | |
| 2233 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) | |
| 2234 show_fgcolor_dialog(conv, color); | |
| 2235 else if (gtkconv->dialogs.fg_color != NULL) | |
| 2236 cancel_fgcolor(color, conv); | |
| 2237 else | |
| 2238 gaim_gtk_advance_past(gtkconv, "<FONT COLOR>", "</FONT>"); | |
| 2239 } | |
| 2240 | |
| 2241 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2242 toggle_bg_color(GtkWidget *color, GaimConversation *conv) |
| 4359 | 2243 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2244 GaimGtkConversation *gtkconv; |
| 4359 | 2245 |
| 2246 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2247 | |
| 2248 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(color))) | |
| 2249 show_bgcolor_dialog(conv, color); | |
| 2250 else if (gtkconv->dialogs.bg_color != NULL) | |
| 2251 cancel_bgcolor(color, conv); | |
| 2252 else | |
| 2253 gaim_gtk_advance_past(gtkconv, "<BODY BGCOLOR>", "</BODY>"); | |
| 2254 } | |
| 2255 | |
| 2256 static void | |
| 2257 check_everything(GtkTextBuffer *buffer) | |
| 2258 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2259 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2260 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2261 |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2262 conv = (GaimConversation *)g_object_get_data(G_OBJECT(buffer), |
| 4359 | 2263 "user_data"); |
| 2264 | |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2265 g_return_if_fail(conv != NULL); |
| 4359 | 2266 |
| 2267 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 2268 | |
| 2269 /* CONV TODO */ | |
| 2270 } | |
| 2271 | |
| 2272 static void | |
| 4685 | 2273 set_toggle(GtkWidget *tb, gboolean active) |
| 4359 | 2274 { |
| 2275 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tb), active); | |
| 2276 } | |
| 2277 | |
| 2278 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2279 got_typing_keypress(GaimConversation *conv, gboolean first) |
| 4359 | 2280 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2281 GaimConvIm *im; |
| 4685 | 2282 |
| 4359 | 2283 /* |
| 2284 * 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
|
2285 * send GAIM_TYPED any time soon. |
| 4359 | 2286 */ |
| 2287 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2288 im = GAIM_CONV_IM(conv); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2289 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2290 if (gaim_conv_im_get_type_again_timeout(im)) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2291 gaim_conv_im_stop_type_again_timeout(im); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2292 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2293 gaim_conv_im_start_type_again_timeout(im); |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2294 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2295 if (first || (gaim_conv_im_get_type_again(im) != 0 && |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2296 time(NULL) > gaim_conv_im_get_type_again(im))) { |
| 4359 | 2297 |
| 2298 int timeout = serv_send_typing(gaim_conversation_get_gc(conv), | |
| 2299 (char *)gaim_conversation_get_name(conv), | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5860
diff
changeset
|
2300 GAIM_TYPING); |
| 4359 | 2301 |
| 2302 if (timeout) | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2303 gaim_conv_im_set_type_again(im, time(NULL) + timeout); |
| 4359 | 2304 else |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2305 gaim_conv_im_set_type_again(im, 0); |
| 4359 | 2306 } |
| 2307 } | |
| 2308 | |
| 4736 | 2309 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2310 update_typing_icon(GaimConversation *conv) |
| 4736 | 2311 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2312 GaimGtkWindow *gtkwin; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2313 GaimConvIm *im = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2314 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4736 | 2315 |
| 2316 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); | |
| 2317 | |
| 2318 if(gaim_conversation_get_type(conv) == GAIM_CONV_IM) | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2319 im = GAIM_CONV_IM(conv); |
| 4736 | 2320 |
| 2321 if(gtkwin->menu.typing_icon) { | |
| 2322 gtk_widget_destroy(gtkwin->menu.typing_icon); | |
| 2323 gtkwin->menu.typing_icon = NULL; | |
| 2324 } | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2325 if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) { |
| 4736 | 2326 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
| 2327 gtk_image_menu_item_set_image( | |
| 2328 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
| 2329 gtk_image_new_from_stock(GAIM_STOCK_TYPING, | |
| 2330 GTK_ICON_SIZE_MENU)); | |
| 4757 | 2331 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
| 4736 | 2332 _("User is typing..."), NULL); |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2333 } else if(im && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) { |
| 4736 | 2334 gtkwin->menu.typing_icon = gtk_image_menu_item_new(); |
| 2335 gtk_image_menu_item_set_image( | |
| 2336 GTK_IMAGE_MENU_ITEM(gtkwin->menu.typing_icon), | |
| 2337 gtk_image_new_from_stock(GAIM_STOCK_TYPED, | |
| 2338 GTK_ICON_SIZE_MENU)); | |
| 4757 | 2339 gtk_tooltips_set_tip(gtkconv->tooltips, gtkwin->menu.typing_icon, |
| 4736 | 2340 _("User has typed something and paused"), NULL); |
| 2341 } | |
| 2342 | |
| 2343 if(gtkwin->menu.typing_icon) { | |
| 2344 gtk_menu_item_set_right_justified( | |
| 2345 GTK_MENU_ITEM(gtkwin->menu.typing_icon), TRUE); | |
| 2346 gtk_widget_show_all(gtkwin->menu.typing_icon); | |
| 2347 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar), | |
| 2348 gtkwin->menu.typing_icon); | |
| 2349 } | |
| 2350 } | |
| 2351 | |
| 4685 | 2352 static gboolean |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2353 update_send_as_selection(GaimConvWindow *win) |
| 4359 | 2354 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2355 GaimAccount *account; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2356 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2357 GaimGtkWindow *gtkwin; |
| 4359 | 2358 GtkWidget *menu; |
| 2359 GList *child; | |
| 2360 | |
|
7090
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2361 if (g_list_find(gaim_get_windows(), win) == NULL) |
|
04f9f7440bc3
[gaim-migrate @ 7655]
Christian Hammond <chipx86@chipx86.com>
parents:
7089
diff
changeset
|
2362 return FALSE; |
| 4849 | 2363 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2364 conv = gaim_conv_window_get_active_conversation(win); |
| 4359 | 2365 |
|
5860
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2366 if (conv == NULL) |
|
52d5fad43950
[gaim-migrate @ 6291]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
2367 return FALSE; |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2368 |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2369 account = gaim_conversation_get_account(conv); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2370 gtkwin = GAIM_GTK_WINDOW(win); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2371 |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2372 if (gtkwin->menu.send_as == NULL) |
| 4685 | 2373 return FALSE; |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
2374 |
| 4359 | 2375 gtk_widget_show(gtkwin->menu.send_as); |
| 2376 | |
| 2377 menu = gtk_menu_item_get_submenu( | |
| 2378 GTK_MENU_ITEM(gtkwin->menu.send_as)); | |
| 2379 | |
| 2380 for (child = gtk_container_get_children(GTK_CONTAINER(menu)); | |
| 2381 child != NULL; | |
| 2382 child = child->next) { | |
| 2383 | |
| 2384 GtkWidget *item = child->data; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2385 GaimAccount *item_account = g_object_get_data(G_OBJECT(item), |
| 4673 | 2386 "gaim_account"); |
| 2387 | |
| 2388 if (account == item_account) { | |
| 4359 | 2389 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); |
| 2390 break; | |
| 2391 } | |
| 2392 } | |
|
6030
54c37db13279
[gaim-migrate @ 6480]
Christian Hammond <chipx86@chipx86.com>
parents:
6016
diff
changeset
|
2393 |
| 4685 | 2394 return FALSE; |
| 4359 | 2395 } |
| 2396 | |
| 2397 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2398 generate_send_as_items(GaimConvWindow *win, GaimConversation *deleted_conv) |
| 4359 | 2399 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2400 GaimGtkWindow *gtkwin; |
| 4359 | 2401 GtkWidget *menu; |
| 2402 GtkWidget *menuitem; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2403 GList *gcs; |
| 4359 | 2404 GList *convs; |
| 2405 GSList *group = NULL; | |
| 2406 gboolean first_offline = TRUE; | |
| 2407 gboolean found_online = FALSE; | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2408 GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| 4359 | 2409 |
| 2410 gtkwin = GAIM_GTK_WINDOW(win); | |
| 2411 | |
| 2412 if (gtkwin->menu.send_as != NULL) | |
| 2413 gtk_widget_destroy(gtkwin->menu.send_as); | |
| 2414 | |
| 2415 /* See if we have > 1 connection active. */ | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2416 if (g_list_length(gaim_connections_get_all()) < 2) { |
| 4359 | 2417 /* Now make sure we don't have any Offline entries. */ |
| 2418 gboolean found_offline = FALSE; | |
| 2419 | |
| 2420 for (convs = gaim_get_conversations(); | |
| 2421 convs != NULL; | |
| 2422 convs = convs->next) { | |
| 2423 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2424 GaimConversation *conv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2425 GaimAccount *account; |
| 4491 | 2426 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2427 conv = (GaimConversation *)convs->data; |
| 4491 | 2428 account = gaim_conversation_get_account(conv); |
| 2429 | |
|
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2430 if (account != NULL && account->gc == NULL) { |
| 4359 | 2431 found_offline = TRUE; |
| 2432 break; | |
| 2433 } | |
| 2434 } | |
| 2435 | |
| 2436 if (!found_offline) { | |
| 2437 gtkwin->menu.send_as = NULL; | |
| 2438 return; | |
| 2439 } | |
| 2440 } | |
| 2441 | |
| 2442 /* Build the Send As menu */ | |
| 2443 gtkwin->menu.send_as = gtk_menu_item_new_with_mnemonic(_("_Send As")); | |
| 2444 gtk_widget_show(gtkwin->menu.send_as); | |
| 2445 | |
| 2446 menu = gtk_menu_new(); | |
| 2447 | |
| 2448 gtk_menu_shell_append(GTK_MENU_SHELL(gtkwin->menu.menubar), | |
| 2449 gtkwin->menu.send_as); | |
| 2450 gtk_menu_item_set_submenu(GTK_MENU_ITEM(gtkwin->menu.send_as), menu); | |
| 2451 | |
| 2452 gtk_widget_show(menu); | |
| 2453 | |
| 2454 /* Fill it with entries. */ | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2455 for (gcs = gaim_connections_get_all(); gcs != NULL; gcs = gcs->next) { |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2456 |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2457 GaimConnection *gc; |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2458 GaimAccount *account; |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2459 GtkWidget *box; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2460 GtkWidget *label; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2461 GtkWidget *image; |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2462 GdkPixbuf *pixbuf, *scale; |
| 4359 | 2463 |
| 2464 found_online = TRUE; | |
| 2465 | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2466 gc = (GaimConnection *)gcs->data; |
| 4359 | 2467 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2468 /* Create a pixmap for the protocol icon. */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2469 pixbuf = create_prpl_icon(gc->account); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2470 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
|
2471 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2472 /* Now convert it to GtkImage */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2473 if (pixbuf == NULL) |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2474 image = gtk_image_new(); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2475 else |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2476 image = gtk_image_new_from_pixbuf(scale); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2477 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2478 gtk_size_group_add_widget(sg, image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2479 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2480 g_object_unref(G_OBJECT(scale)); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2481 g_object_unref(G_OBJECT(pixbuf)); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2482 |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2483 account = gaim_connection_get_account(gc); |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2484 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2485 /* Make our menu item */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2486 menuitem = gtk_radio_menu_item_new_with_label(group, |
|
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2487 gaim_account_get_username(account)); |
| 4793 | 2488 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 4359 | 2489 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2490 /* Do some evil, see some evil, speak some evil. */ |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2491 box = gtk_hbox_new(FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2492 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2493 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2494 g_object_ref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2495 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2496 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2497 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2498 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2499 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2500 g_object_unref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2501 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2502 gtk_container_add(GTK_CONTAINER(menuitem), box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2503 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2504 gtk_widget_show(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2505 gtk_widget_show(image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2506 gtk_widget_show(box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2507 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2508 /* Set our data and callbacks. */ |
| 4359 | 2509 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
| 4673 | 2510 g_object_set_data(G_OBJECT(menuitem), "gaim_account", gc->account); |
| 4359 | 2511 |
| 4786 | 2512 g_signal_connect(G_OBJECT(menuitem), "activate", |
| 4673 | 2513 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
| 4359 | 2514 |
| 2515 gtk_widget_show(menuitem); | |
| 2516 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2517 } | |
| 2518 | |
| 2519 /* | |
| 2520 * Fill it with any accounts that still has an open (yet disabled) window | |
| 2521 * (signed off accounts with a window open). | |
| 2522 */ | |
| 2523 for (convs = gaim_get_conversations(); | |
| 2524 convs != NULL; | |
| 2525 convs = convs->next) { | |
| 2526 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2527 GaimConversation *conv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2528 GaimAccount *account; |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2529 GtkWidget *box; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2530 GtkWidget *label; |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2531 GtkWidget *image; |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2532 GdkPixbuf *pixbuf, *scale; |
| 4359 | 2533 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2534 conv = (GaimConversation *)convs->data; |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2535 |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2536 if (conv == deleted_conv) |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2537 continue; |
|
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
2538 |
| 4491 | 2539 account = gaim_conversation_get_account(conv); |
| 2540 | |
|
6495
8ce66049ce68
[gaim-migrate @ 7010]
Christian Hammond <chipx86@chipx86.com>
parents:
6485
diff
changeset
|
2541 if (account != NULL && account->gc == NULL) { |
| 4359 | 2542 if (first_offline && found_online) { |
| 2543 menuitem = gtk_separator_menu_item_new(); | |
| 2544 gtk_widget_show(menuitem); | |
| 2545 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2546 | |
| 2547 first_offline = FALSE; | |
| 2548 } | |
| 2549 | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2550 /* Create a pixmap for the protocol icon. */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2551 pixbuf = create_prpl_icon(account); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2552 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2553 GDK_INTERP_BILINEAR); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2554 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2555 /* Now convert it to GtkImage */ |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2556 if (pixbuf == NULL) |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2557 image = gtk_image_new(); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2558 else |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2559 image = gtk_image_new_from_pixbuf(scale); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2560 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2561 gtk_size_group_add_widget(sg, image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2562 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2563 if (scale != NULL) g_object_unref(scale); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
2564 if (pixbuf != NULL) g_object_unref(pixbuf); |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2565 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2566 /* Make our menu item */ |
| 4359 | 2567 menuitem = gtk_radio_menu_item_new_with_label(group, |
| 4491 | 2568 account->username); |
| 4793 | 2569 group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); |
| 4359 | 2570 |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2571 /* Do some evil, see some evil, speak some evil. */ |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2572 box = gtk_hbox_new(FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2573 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2574 label = gtk_bin_get_child(GTK_BIN(menuitem)); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2575 g_object_ref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2576 gtk_container_remove(GTK_CONTAINER(menuitem), label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2577 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2578 gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2579 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2580 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2581 g_object_unref(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2582 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2583 gtk_container_add(GTK_CONTAINER(menuitem), box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2584 |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2585 gtk_widget_show(label); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2586 gtk_widget_show(image); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2587 gtk_widget_show(box); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2588 |
| 4359 | 2589 gtk_widget_set_sensitive(menuitem, FALSE); |
| 4786 | 2590 g_object_set_data(G_OBJECT(menuitem), "user_data", win); |
| 4674 | 2591 g_object_set_data(G_OBJECT(menuitem), "gaim_account", account); |
| 4359 | 2592 |
| 4786 | 2593 g_signal_connect(G_OBJECT(menuitem), "activate", |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
2594 G_CALLBACK(menu_conv_sel_send_cb), NULL); |
| 4786 | 2595 |
| 4359 | 2596 gtk_widget_show(menuitem); |
| 2597 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); | |
| 2598 } | |
| 2599 } | |
| 2600 | |
|
4669
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2601 g_object_unref(sg); |
|
d715736164ae
[gaim-migrate @ 4980]
Christian Hammond <chipx86@chipx86.com>
parents:
4668
diff
changeset
|
2602 |
| 4359 | 2603 gtk_widget_show(gtkwin->menu.send_as); |
| 2604 update_send_as_selection(win); | |
| 2605 } | |
| 2606 | |
| 2607 static GList * | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
2608 generate_invite_user_names(GaimConnection *gc) |
| 4359 | 2609 { |
| 6695 | 2610 GaimBlistNode *gnode,*cnode,*bnode; |
| 4359 | 2611 static GList *tmp = NULL; |
| 2612 | |
| 2613 if (tmp) | |
| 2614 g_list_free(tmp); | |
| 2615 | |
| 2616 tmp = g_list_append(NULL, ""); | |
| 2617 | |
| 2618 if (gc != NULL) { | |
| 4785 | 2619 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 2620 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 2621 continue; | |
| 6695 | 2622 for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 2623 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 4785 | 2624 continue; |
| 6695 | 2625 for(bnode = cnode->child; bnode; bnode = bnode->next) { |
| 2626 GaimBuddy *buddy; | |
| 2627 | |
| 2628 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 2629 continue; | |
| 2630 | |
| 2631 buddy = (GaimBuddy *)bnode; | |
| 2632 | |
| 2633 if (buddy->account == gc->account && | |
| 2634 GAIM_BUDDY_IS_ONLINE(buddy)) | |
| 2635 tmp = g_list_append(tmp, buddy->name); | |
| 2636 } | |
| 4359 | 2637 } |
| 2638 } | |
| 2639 } | |
| 2640 | |
| 2641 return tmp; | |
| 2642 } | |
| 2643 | |
| 2644 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2645 add_chat_buddy_common(GaimConversation *conv, const char *name, int pos) |
| 4359 | 2646 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2647 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2648 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2649 GaimConvChat *chat; |
| 4359 | 2650 GtkTreeIter iter; |
| 2651 GtkListStore *ls; | |
| 2652 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2653 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 2654 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 2655 gtkchat = gtkconv->u.chat; | |
| 2656 | |
| 2657 ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list))); | |
| 2658 | |
| 2659 gtk_list_store_append(ls, &iter); | |
| 2660 gtk_list_store_set(ls, &iter, 0, | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2661 (gaim_conv_chat_is_user_ignored(chat, name) ? "X" : " "), |
| 4359 | 2662 1, name, -1); |
| 2663 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
| 2664 GTK_SORT_ASCENDING); | |
| 2665 } | |
| 2666 | |
| 2667 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2668 tab_complete(GaimConversation *conv) |
| 4359 | 2669 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2670 GaimGtkConversation *gtkconv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2671 GaimConvChat *chat; |
| 4359 | 2672 GtkTextIter cursor, word_start, start_buffer; |
| 2673 int start; | |
| 2674 int most_matched = -1; | |
| 2675 char *entered, *partial = NULL; | |
| 2676 char *text; | |
| 2677 GList *matches = NULL; | |
| 2678 GList *nicks = NULL; | |
| 2679 | |
| 2680 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2681 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 2682 |
| 2683 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 2684 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2685 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2686 | |
| 2687 word_start = cursor; | |
| 2688 | |
| 2689 /* if there's nothing there just return */ | |
| 2690 if (!gtk_text_iter_compare(&cursor, &start_buffer)) | |
| 2691 return; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
2692 |
| 4359 | 2693 text = gtk_text_buffer_get_text(gtkconv->entry_buffer, &start_buffer, |
| 2694 &cursor, FALSE); | |
| 2695 | |
| 2696 /* if we're at the end of ": " we need to move back 2 spaces */ | |
| 2697 start = strlen(text) - 1; | |
| 2698 | |
| 2699 if (strlen(text) >= 2 && !strncmp(&text[start-1], ": ", 2)) | |
| 2700 gtk_text_iter_backward_chars(&word_start, 2); | |
| 2701 | |
| 2702 /* find the start of the word that we're tabbing */ | |
| 2703 while (start >= 0 && text[start] != ' ') { | |
| 2704 gtk_text_iter_backward_char(&word_start); | |
| 2705 start--; | |
| 2706 } | |
| 2707 | |
| 2708 g_free(text); | |
| 2709 | |
| 2710 entered = gtk_text_buffer_get_text(gtkconv->entry_buffer, &word_start, | |
| 2711 &cursor, FALSE); | |
| 2712 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
2713 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
| 4359 | 2714 if (strlen(entered) >= 2 && |
| 2715 !strncmp(": ", entered + strlen(entered) - 2, 2)) { | |
| 2716 | |
| 2717 entered[strlen(entered) - 2] = 0; | |
| 2718 } | |
| 2719 } | |
| 2720 | |
| 2721 if (!strlen(entered)) { | |
| 2722 g_free(entered); | |
| 2723 return; | |
| 2724 } | |
| 2725 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2726 for (nicks = gaim_conv_chat_get_users(chat); |
| 4359 | 2727 nicks != NULL; |
| 2728 nicks = nicks->next) { | |
| 2729 | |
| 2730 char *nick = nicks->data; | |
| 2731 /* this checks to see if the current nick could be a completion */ | |
| 4793 | 2732 if (g_ascii_strncasecmp(nick, entered, strlen(entered))) { |
|
4621
69f028a6f357
[gaim-migrate @ 4912]
Christian Hammond <chipx86@chipx86.com>
parents:
4608
diff
changeset
|
2733 if (*nick != '+' && *nick != '@' && *nick != '%') |
| 4359 | 2734 continue; |
| 2735 | |
| 4793 | 2736 if (g_ascii_strncasecmp(nick + 1, entered, strlen(entered))) { |
| 4359 | 2737 if (nick[0] != '@' || nick[1] != '+') |
| 2738 continue; | |
| 2739 | |
| 4793 | 2740 if (g_ascii_strncasecmp(nick + 2, entered, strlen(entered))) |
| 4359 | 2741 continue; |
| 2742 else | |
| 2743 nick += 2; | |
| 2744 } | |
| 2745 else | |
| 2746 nick++; | |
| 2747 } | |
| 2748 | |
| 2749 /* if we're here, it's a possible completion */ | |
| 2750 | |
| 2751 /* 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
|
2752 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/old_tab_complete")) { |
| 4359 | 2753 gtk_text_buffer_delete(gtkconv->entry_buffer, |
| 2754 &word_start, &cursor); | |
| 2755 | |
| 2756 if (strlen(nick) == strlen(entered)) { | |
| 2757 nicks = (nicks->next | |
| 2758 ? nicks->next | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2759 : gaim_conv_chat_get_users(chat)); |
| 4359 | 2760 |
| 2761 nick = nicks->data; | |
| 2762 | |
| 2763 if (*nick == '@') nick++; | |
|
4621
69f028a6f357
[gaim-migrate @ 4912]
Christian Hammond <chipx86@chipx86.com>
parents:
4608
diff
changeset
|
2764 if (*nick == '%') nick++; |
| 4359 | 2765 if (*nick == '+') nick++; |
| 2766 } | |
| 2767 | |
| 2768 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, | |
| 2769 &start_buffer); | |
| 2770 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2771 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2772 | |
| 2773 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
| 2774 char *tmp = g_strdup_printf("%s: ", nick); | |
| 2775 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 2776 tmp, -1); | |
| 2777 g_free(tmp); | |
| 2778 } | |
| 2779 else | |
| 2780 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 2781 nick, -1); | |
| 2782 | |
| 2783 g_free(entered); | |
| 2784 | |
| 2785 return; | |
| 2786 } | |
| 2787 | |
| 2788 /* we're only here if we're doing new style */ | |
| 2789 if (most_matched == -1) { | |
| 2790 /* | |
| 2791 * this will only get called once, since from now | |
| 2792 * on most_matched is >= 0 | |
| 2793 */ | |
| 2794 most_matched = strlen(nick); | |
| 2795 partial = g_strdup(nick); | |
| 2796 } | |
| 2797 else if (most_matched) { | |
| 4793 | 2798 while (g_ascii_strncasecmp(nick, partial, most_matched)) |
| 4359 | 2799 most_matched--; |
| 2800 | |
| 2801 partial[most_matched] = 0; | |
| 2802 } | |
| 2803 | |
| 2804 matches = g_list_append(matches, nick); | |
| 2805 } | |
| 2806 | |
| 2807 /* we're only here if we're doing new style */ | |
| 2808 | |
| 2809 /* if there weren't any matches, return */ | |
| 2810 if (!matches) { | |
| 2811 /* if matches isn't set partials won't be either */ | |
| 2812 g_free(entered); | |
| 2813 return; | |
| 2814 } | |
| 2815 | |
| 2816 gtk_text_buffer_delete(gtkconv->entry_buffer, &word_start, &cursor); | |
| 2817 | |
| 2818 if (!matches->next) { | |
| 2819 /* there was only one match. fill it in. */ | |
| 2820 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_buffer); | |
| 2821 gtk_text_buffer_get_iter_at_mark(gtkconv->entry_buffer, &cursor, | |
| 2822 gtk_text_buffer_get_insert(gtkconv->entry_buffer)); | |
| 2823 | |
| 2824 if (!gtk_text_iter_compare(&cursor, &start_buffer)) { | |
| 2825 char *tmp = g_strdup_printf("%s: ", (char *)matches->data); | |
| 2826 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, tmp, -1); | |
| 2827 g_free(tmp); | |
| 2828 } | |
| 2829 else | |
| 2830 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, | |
| 2831 matches->data, -1); | |
| 2832 | |
| 2833 matches = g_list_remove(matches, matches->data); | |
| 2834 } | |
| 2835 else { | |
| 2836 /* | |
| 2837 * there were lots of matches, fill in as much as possible | |
| 2838 * and display all of them | |
| 2839 */ | |
| 2840 char *addthis = g_malloc0(1); | |
| 2841 | |
| 2842 while (matches) { | |
| 2843 char *tmp = addthis; | |
| 2844 addthis = g_strconcat(tmp, matches->data, " ", NULL); | |
| 2845 g_free(tmp); | |
| 2846 matches = g_list_remove(matches, matches->data); | |
| 2847 } | |
| 2848 | |
| 6982 | 2849 gaim_conversation_write(conv, NULL, addthis, GAIM_MESSAGE_NO_LOG, |
| 4359 | 2850 time(NULL)); |
| 2851 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, partial, -1); | |
| 2852 g_free(addthis); | |
| 2853 } | |
| 2854 | |
| 2855 g_free(entered); | |
| 2856 g_free(partial); | |
| 2857 } | |
| 2858 | |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2859 static void |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2860 save_convo(GtkWidget *save, GaimConversation *c) |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2861 { |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2862 char buf[BUF_LONG]; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2863 GtkWidget *window; |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2864 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2865 window = gtk_file_selection_new(_("Gaim - Save Conversation")); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2866 |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2867 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log", |
| 7261 | 2868 gaim_home_dir(), gaim_normalize(c->account, c->name)); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2869 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2870 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
|
2871 "gaim_conversation", c); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2872 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), |
| 6038 | 2873 "clicked", G_CALLBACK(do_check_save_convo), window); |
|
5934
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2874 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
|
2875 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)window); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2876 gtk_widget_show(window); |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2877 } |
|
91ee71a394be
[gaim-migrate @ 6374]
Christian Hammond <chipx86@chipx86.com>
parents:
5929
diff
changeset
|
2878 |
| 4359 | 2879 static GtkItemFactoryEntry menu_items[] = |
| 2880 { | |
| 2881 /* Conversation menu */ | |
| 4596 | 2882 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2883 |
| 7748 | 2884 { N_("/Conversation/_New Conversation..."), NULL, menu_new_conv_cb, |
| 2885 0, "<StockItem>", GTK_STOCK_NEW }, | |
| 2886 | |
| 2887 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" }, | |
| 2888 | |
| 4596 | 2889 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, |
| 4359 | 2890 "<StockItem>", GTK_STOCK_SAVE_AS }, |
| 7295 | 2891 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL }, |
| 7751 | 2892 { N_("/Conversation/Find..."), NULL, menu_find_cb, 0, "<StockItem>", GTK_STOCK_FIND }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2893 |
| 4359 | 2894 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2895 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
2896 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, |
|
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
2897 0, NULL }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2898 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2899 "<StockItem>", GAIM_STOCK_EDIT }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2900 { N_("/Conversation/_Get Info..."), NULL, menu_get_info_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2901 "<StockItem>", GAIM_STOCK_INFO }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2902 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2903 "<StockItem>", GAIM_STOCK_INVITE }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2904 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
2905 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2906 |
| 4596 | 2907 { N_("/Conversation/Insert _URL..."), NULL, menu_insert_link_cb, 0, |
| 4359 | 2908 "<StockItem>", GAIM_STOCK_LINK }, |
| 4596 | 2909 { N_("/Conversation/Insert _Image..."), NULL, menu_insert_image_cb, 0, |
| 4359 | 2910 "<StockItem>", GAIM_STOCK_IMAGE }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2911 |
|
5907
18486c860a46
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5902
diff
changeset
|
2912 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" }, |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2913 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2914 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2915 "<StockItem>", GAIM_STOCK_WARN }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2916 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2917 "<StockItem>", GAIM_STOCK_BLOCK }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2918 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2919 "<StockItem>", GTK_STOCK_ADD }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2920 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2921 "<StockItem>", GTK_STOCK_REMOVE }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2922 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2923 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" }, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2924 |
| 4596 | 2925 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, |
| 4359 | 2926 "<StockItem>", GTK_STOCK_CLOSE }, |
| 2927 | |
| 2928 /* Options */ | |
| 4596 | 2929 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, |
| 2930 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, | |
| 2931 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
2932 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" }, |
| 4359 | 2933 }; |
| 2934 | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
2935 static const int menu_item_count = |
| 4359 | 2936 sizeof(menu_items) / sizeof(*menu_items); |
| 2937 | |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2938 static char * |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2939 item_factory_translate_func (const char *path, gpointer func_data) |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2940 { |
| 7386 | 2941 return _((char *)path); |
|
4602
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2942 } |
|
4128761bacb8
[gaim-migrate @ 4889]
Christian Hammond <chipx86@chipx86.com>
parents:
4598
diff
changeset
|
2943 |
| 4359 | 2944 static GtkWidget * |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
2945 setup_menubar(GaimConvWindow *win) |
| 4359 | 2946 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
2947 GaimGtkWindow *gtkwin; |
| 5116 | 2948 GtkAccelGroup *accel_group; |
| 4359 | 2949 gtkwin = GAIM_GTK_WINDOW(win); |
| 2950 | |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
2951 accel_group = gtk_accel_group_new (); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
2952 gtk_window_add_accel_group (GTK_WINDOW (gtkwin->window), accel_group); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
2953 g_object_unref (accel_group); |
| 5116 | 2954 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2955 gtkwin->menu.item_factory = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2956 gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2957 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2958 gtk_item_factory_set_translate_func(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2959 item_factory_translate_func, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2960 NULL, NULL); |
| 4630 | 2961 |
| 2962 gtk_item_factory_create_items(gtkwin->menu.item_factory, menu_item_count, | |
| 4359 | 2963 menu_items, win); |
| 7420 | 2964 g_signal_connect(G_OBJECT(accel_group), "accel-changed", |
| 2965 G_CALLBACK(gaim_gtk_save_accels_cb), NULL); | |
| 4359 | 2966 |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2967 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2968 gtkwin->menu.menubar = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2969 gtk_item_factory_get_widget(gtkwin->menu.item_factory, "<main>"); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2970 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2971 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2972 gtkwin->menu.view_log = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2973 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
| 7295 | 2974 N_("/Conversation/View Log")); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2975 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2976 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2977 gtkwin->menu.add_pounce = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2978 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2979 N_("/Conversation/Add Buddy Pounce...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2980 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2981 gtkwin->menu.alias = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2982 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2983 N_("/Conversation/Alias...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2984 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2985 gtkwin->menu.get_info = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2986 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2987 N_("/Conversation/Get Info...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2988 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2989 gtkwin->menu.invite = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2990 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2991 N_("/Conversation/Invite...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2992 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2993 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2994 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2995 gtkwin->menu.insert_link = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2996 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2997 N_("/Conversation/Insert URL...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2998 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
2999 gtkwin->menu.insert_image = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3000 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3001 N_("/Conversation/Insert Image...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3002 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3003 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3004 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3005 gtkwin->menu.warn = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3006 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3007 N_("/Conversation/Warn...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3008 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3009 gtkwin->menu.block = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3010 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3011 N_("/Conversation/Block...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3012 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3013 gtkwin->menu.add = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3014 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3015 N_("/Conversation/Add...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3016 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3017 gtkwin->menu.remove = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3018 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3019 N_("/Conversation/Remove...")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3020 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3021 /* --- */ |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3022 |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3023 gtkwin->menu.logging = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3024 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3025 N_("/Options/Enable Logging")); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3026 gtkwin->menu.sounds = |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3027 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
3028 N_("/Options/Enable Sounds")); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3029 gtkwin->menu.show_formatting_toolbar = |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3030 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3031 N_("/Options/Show Formatting Toolbar")); |
| 4359 | 3032 |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
3033 generate_send_as_items(win, NULL); |
| 4359 | 3034 |
| 3035 gtk_widget_show(gtkwin->menu.menubar); | |
| 4931 | 3036 |
| 3037 return gtkwin->menu.menubar; | |
| 4359 | 3038 } |
| 3039 | |
| 3040 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3041 setup_im_buttons(GaimConversation *conv, GtkWidget *parent) |
| 4359 | 3042 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3043 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3044 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3045 GaimGtkImPane *gtkim; |
| 4359 | 3046 GaimConversationType type = GAIM_CONV_IM; |
| 3047 | |
| 3048 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3049 gtkim = gtkconv->u.im; | |
| 3050 gc = gaim_conversation_get_gc(conv); | |
| 3051 | |
| 3052 /* From right to left... */ | |
| 3053 | |
| 3054 /* Send button */ | |
| 3055 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
| 3056 GAIM_STOCK_SEND, type); | |
| 3057 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); | |
| 3058 | |
| 3059 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
| 3060 | |
| 3061 /* Separator */ | |
| 3062 if (gtkim->sep2 != NULL) | |
| 3063 gtk_widget_destroy(gtkim->sep2); | |
| 3064 | |
| 3065 gtkim->sep2 = gtk_vseparator_new(); | |
| 3066 gtk_box_pack_end(GTK_BOX(parent), gtkim->sep2, FALSE, TRUE, 0); | |
| 3067 gtk_widget_show(gtkim->sep2); | |
| 3068 | |
| 3069 /* Now, um, just kind of all over the place. Huh? */ | |
| 3070 | |
| 3071 /* Add button */ | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3072 if (gaim_find_buddy(gaim_conversation_get_account(conv), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3073 gaim_conversation_get_name(conv)) == NULL) { |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3074 |
| 4359 | 3075 gtkim->add = gaim_gtk_change_text(_("Add"), gtkim->add, |
| 3076 GTK_STOCK_ADD, type); | |
| 3077 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->add, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3078 _("Add the user to your buddy list"), NULL); |
| 4359 | 3079 } |
| 3080 else { | |
| 3081 gtkim->add = gaim_gtk_change_text(_("Remove"), gtkim->add, | |
| 3082 GTK_STOCK_REMOVE, type); | |
| 3083 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->add, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3084 _("Remove the user from your buddy list"), NULL); |
| 4359 | 3085 } |
| 3086 | |
| 3087 gtk_box_pack_start(GTK_BOX(parent), gtkim->add, | |
| 3088 FALSE, FALSE, 0); | |
| 3089 | |
| 3090 /* Warn button */ | |
| 3091 gtkim->warn = gaim_gtk_change_text(_("Warn"), gtkim->warn, | |
| 3092 GAIM_STOCK_WARN, type); | |
| 3093 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
|
3094 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->warn, |
|
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3095 _("Warn the user"), NULL); |
| 4359 | 3096 |
| 3097 /* Info button */ | |
| 3098 gtkconv->info = gaim_gtk_change_text(_("Info"), gtkconv->info, | |
| 3099 GAIM_STOCK_INFO, type); | |
| 3100 gtk_box_pack_start(GTK_BOX(parent), gtkconv->info, FALSE, FALSE, 0); | |
| 3101 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->info, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3102 _("Get the user's information"), NULL); |
| 4359 | 3103 |
| 3104 /* Block button */ | |
| 3105 gtkim->block = gaim_gtk_change_text(_("Block"), gtkim->block, | |
| 3106 GAIM_STOCK_BLOCK, type); | |
| 3107 gtk_box_pack_start(GTK_BOX(parent), gtkim->block, FALSE, FALSE, 0); | |
| 3108 gtk_tooltips_set_tip(gtkconv->tooltips, gtkim->block, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3109 _("Block the user"), NULL); |
| 4359 | 3110 |
| 3111 gtk_button_set_relief(GTK_BUTTON(gtkconv->info), GTK_RELIEF_NONE); | |
| 3112 gtk_button_set_relief(GTK_BUTTON(gtkim->add), GTK_RELIEF_NONE); | |
| 3113 gtk_button_set_relief(GTK_BUTTON(gtkim->warn), GTK_RELIEF_NONE); | |
| 3114 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); | |
| 3115 gtk_button_set_relief(GTK_BUTTON(gtkim->block), GTK_RELIEF_NONE); | |
| 3116 | |
| 3117 gtk_size_group_add_widget(gtkconv->sg, gtkconv->info); | |
| 3118 gtk_size_group_add_widget(gtkconv->sg, gtkim->add); | |
| 3119 gtk_size_group_add_widget(gtkconv->sg, gtkim->warn); | |
| 3120 gtk_size_group_add_widget(gtkconv->sg, gtkconv->send); | |
| 3121 gtk_size_group_add_widget(gtkconv->sg, gtkim->block); | |
| 3122 | |
| 3123 gtk_box_reorder_child(GTK_BOX(parent), gtkim->warn, 1); | |
| 3124 gtk_box_reorder_child(GTK_BOX(parent), gtkim->block, 2); | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3125 gtk_box_reorder_child(GTK_BOX(parent), gtkim->add, 3); |
| 4359 | 3126 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->info, 4); |
| 3127 | |
| 3128 gaim_gtkconv_update_buttons_by_protocol(conv); | |
| 3129 | |
| 3130 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", | |
| 3131 G_CALLBACK(send_cb), conv); | |
| 3132 g_signal_connect(G_OBJECT(gtkconv->info), "clicked", | |
| 3133 G_CALLBACK(info_cb), conv); | |
| 3134 g_signal_connect(G_OBJECT(gtkim->warn), "clicked", | |
| 3135 G_CALLBACK(warn_cb), conv); | |
| 3136 g_signal_connect(G_OBJECT(gtkim->block), "clicked", | |
| 3137 G_CALLBACK(block_cb), conv); | |
| 3138 } | |
| 3139 | |
| 3140 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3141 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent) |
| 4359 | 3142 { |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3143 GaimConnection *gc; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3144 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3145 GaimGtkChatPane *gtkchat; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3146 GaimGtkWindow *gtkwin; |
| 4359 | 3147 GtkWidget *sep; |
| 3148 | |
| 3149 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3150 gtkchat = gtkconv->u.chat; | |
| 3151 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); | |
| 3152 gc = gaim_conversation_get_gc(conv); | |
| 3153 | |
| 3154 /* Send button */ | |
| 3155 gtkconv->send = gaim_gtk_change_text(_("Send"), gtkconv->send, | |
| 3156 GAIM_STOCK_SEND, GAIM_CONV_CHAT); | |
| 3157 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->send, _("Send"), NULL); | |
| 3158 | |
| 3159 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, 0); | |
| 3160 | |
| 3161 /* Separator */ | |
| 3162 sep = gtk_vseparator_new(); | |
| 3163 gtk_box_pack_end(GTK_BOX(parent), sep, FALSE, TRUE, 0); | |
| 3164 gtk_widget_show(sep); | |
| 3165 | |
| 3166 /* Invite */ | |
| 3167 gtkchat->invite = gaim_gtk_change_text(_("Invite"), gtkchat->invite, | |
| 3168 GAIM_STOCK_INVITE, GAIM_CONV_CHAT); | |
| 3169 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->invite, | |
| 3170 _("Invite a user"), NULL); | |
| 3171 gtk_box_pack_end(GTK_BOX(parent), gtkchat->invite, FALSE, FALSE, 0); | |
| 3172 | |
| 3173 /* Set the relief on these. */ | |
| 3174 gtk_button_set_relief(GTK_BUTTON(gtkchat->invite), GTK_RELIEF_NONE); | |
| 3175 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), GTK_RELIEF_NONE); | |
| 3176 | |
| 3177 /* Callbacks */ | |
| 3178 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", | |
| 3179 G_CALLBACK(send_cb), conv); | |
| 3180 g_signal_connect(G_OBJECT(gtkchat->invite), "clicked", | |
| 3181 G_CALLBACK(invite_cb), conv); | |
| 3182 } | |
| 3183 | |
| 3184 static GtkWidget * | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3185 build_conv_toolbar(GaimConversation *conv) |
| 4359 | 3186 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3187 GaimGtkConversation *gtkconv; |
| 4359 | 3188 GtkWidget *vbox; |
| 3189 GtkWidget *hbox; | |
| 3190 GtkWidget *button; | |
| 3191 GtkWidget *sep; | |
| 3192 GtkSizeGroup *sg; | |
| 3193 | |
| 3194 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3195 | |
| 3196 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); | |
| 3197 | |
| 3198 vbox = gtk_vbox_new(FALSE, 0); | |
| 3199 sep = gtk_hseparator_new(); | |
| 3200 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); | |
| 3201 | |
| 3202 hbox = gtk_hbox_new(FALSE, 5); | |
| 3203 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
| 3204 | |
| 3205 /* Bold */ | |
| 3206 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD); | |
| 3207 gtk_size_group_add_widget(sg, button); | |
| 3208 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3209 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Bold"), NULL); | |
| 3210 | |
| 3211 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3212 G_CALLBACK(do_bold), gtkconv); | |
| 3213 | |
| 3214 gtkconv->toolbar.bold = button; | |
| 3215 | |
| 3216 /* Italic */ | |
| 3217 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC); | |
| 3218 gtk_size_group_add_widget(sg, button); | |
| 3219 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3220 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Italic"), NULL); | |
| 3221 | |
| 3222 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3223 G_CALLBACK(do_italic), gtkconv); | |
| 3224 | |
| 3225 gtkconv->toolbar.italic = button; | |
| 3226 | |
| 3227 /* Underline */ | |
| 3228 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE); | |
| 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, _("Underline"), NULL); | |
| 3232 | |
| 3233 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3234 G_CALLBACK(do_underline), gtkconv); | |
| 3235 | |
| 3236 gtkconv->toolbar.underline = button; | |
| 3237 | |
| 3238 /* Sep */ | |
| 3239 sep = gtk_vseparator_new(); | |
| 3240 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
| 3241 | |
| 3242 /* Increase font size */ | |
| 3243 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_BIGGER); | |
| 3244 gtk_size_group_add_widget(sg, button); | |
| 3245 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3246 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3247 _("Larger font size"), NULL); | |
| 3248 | |
| 3249 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3250 G_CALLBACK(do_big), gtkconv); | |
| 3251 | |
| 5049 | 3252 gtkconv->toolbar.larger_size = button; |
| 3253 | |
| 7740 | 3254 /* Normal font size |
| 4359 | 3255 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_NORMAL); |
| 3256 gtk_size_group_add_widget(sg, button); | |
| 3257 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3258 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3259 _("Normal font size"), NULL); | |
| 3260 | |
| 3261 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3262 G_CALLBACK(do_normal), gtkconv); | |
| 3263 | |
| 3264 gtkconv->toolbar.normal_size = button; | |
| 7740 | 3265 */ |
| 4359 | 3266 |
| 3267 /* Decrease font size */ | |
| 3268 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_SMALLER); | |
| 3269 gtk_size_group_add_widget(sg, button); | |
| 3270 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3271 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3272 _("Smaller font size"), NULL); | |
| 3273 | |
| 3274 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3275 G_CALLBACK(do_small), gtkconv); | |
| 3276 | |
| 5049 | 3277 gtkconv->toolbar.smaller_size = button; |
| 3278 | |
| 4359 | 3279 /* Sep */ |
| 3280 sep = gtk_vseparator_new(); | |
| 3281 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
| 3282 | |
| 4685 | 3283 /* Font Face */ |
| 3284 | |
| 3285 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_SELECT_FONT); | |
| 3286 gtk_size_group_add_widget(sg, button); | |
| 3287 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3288 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3289 _("Font Face"), NULL); | |
| 3290 | |
| 3291 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3292 G_CALLBACK(toggle_font), conv); | |
| 3293 | |
| 3294 gtkconv->toolbar.font = button; | |
| 3295 | |
| 4359 | 3296 /* Foreground Color */ |
| 3297 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_FGCOLOR); | |
| 3298 gtk_size_group_add_widget(sg, button); | |
| 3299 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3300 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3301 _("Foreground font color"), NULL); | |
| 3302 | |
| 3303 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3304 G_CALLBACK(toggle_fg_color), conv); | |
| 3305 | |
| 3306 gtkconv->toolbar.fgcolor = button; | |
| 3307 | |
| 3308 /* Background Color */ | |
| 3309 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_BGCOLOR); | |
| 3310 gtk_size_group_add_widget(sg, button); | |
| 3311 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3312 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
| 3313 _("Background color"), NULL); | |
| 3314 | |
| 3315 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3316 G_CALLBACK(toggle_bg_color), conv); | |
| 3317 | |
| 3318 gtkconv->toolbar.bgcolor = button; | |
| 3319 | |
| 3320 /* Sep */ | |
| 3321 sep = gtk_vseparator_new(); | |
| 3322 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
| 3323 | |
| 3324 /* Insert IM Image */ | |
| 3325 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_IMAGE); | |
| 3326 gtk_size_group_add_widget(sg, button); | |
| 3327 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3328 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert image"), NULL); | |
| 3329 | |
| 3330 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3331 G_CALLBACK(insert_image_cb), conv); | |
| 3332 | |
| 3333 gtkconv->toolbar.image = button; | |
| 3334 | |
| 3335 /* Insert Link */ | |
| 3336 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_LINK); | |
| 3337 gtk_size_group_add_widget(sg, button); | |
| 3338 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3339 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert link"), NULL); | |
| 3340 | |
| 3341 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3342 G_CALLBACK(insert_link_cb), conv); | |
| 3343 | |
| 3344 gtkconv->toolbar.link = button; | |
| 3345 | |
| 3346 /* Insert Smiley */ | |
| 3347 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_SMILEY); | |
| 3348 gtk_size_group_add_widget(sg, button); | |
| 3349 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 3350 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("Insert smiley"), NULL); | |
| 3351 | |
| 3352 g_signal_connect(G_OBJECT(button), "clicked", | |
| 3353 G_CALLBACK(insert_smiley_cb), conv); | |
| 3354 | |
| 3355 gtkconv->toolbar.smiley = button; | |
| 3356 | |
| 3357 | |
| 3358 sep = gtk_hseparator_new(); | |
| 3359 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); | |
| 3360 | |
| 3361 gtk_widget_show_all(vbox); | |
| 3362 | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3363 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar")) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3364 gtk_widget_hide(vbox); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
3365 |
| 4359 | 3366 return vbox; |
| 3367 } | |
| 3368 | |
| 3369 static GtkWidget * | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3370 setup_chat_pane(GaimConversation *conv) |
| 4359 | 3371 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3372 GaimPluginProtocolInfo *prpl_info = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3373 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3374 GaimGtkChatPane *gtkchat; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
3375 GaimConnection *gc; |
| 4359 | 3376 GtkWidget *vpaned, *hpaned; |
| 3377 GtkWidget *vbox, *hbox; | |
| 3378 GtkWidget *lbox, *bbox; | |
| 3379 GtkWidget *label; | |
| 3380 GtkWidget *sw2; | |
| 3381 GtkWidget *list; | |
| 3382 GtkWidget *button; | |
| 3383 GtkWidget *frame; | |
| 3384 GtkListStore *ls; | |
| 3385 GtkCellRenderer *rend; | |
| 3386 GtkTreeViewColumn *col; | |
| 3387 | |
| 3388 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3389 gtkchat = gtkconv->u.chat; | |
| 3390 gc = gaim_conversation_get_gc(conv); | |
| 3391 | |
| 3392 /* Setup the outer pane. */ | |
| 3393 vpaned = gtk_vpaned_new(); | |
| 3394 gtk_widget_show(vpaned); | |
| 3395 | |
| 3396 /* Setup the top part of the pane. */ | |
| 3397 vbox = gtk_vbox_new(FALSE, 5); | |
| 3398 gtk_paned_pack1(GTK_PANED(vpaned), vbox, TRUE, FALSE); | |
| 3399 gtk_widget_show(vbox); | |
| 3400 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3401 if (gc != NULL) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3402 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3403 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
3404 if (prpl_info->options & OPT_PROTO_CHAT_TOPIC) |
| 4359 | 3405 { |
| 3406 hbox = gtk_hbox_new(FALSE, 0); | |
| 3407 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); | |
| 3408 gtk_widget_show(hbox); | |
| 3409 | |
| 3410 label = gtk_label_new(_("Topic:")); | |
| 3411 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | |
| 3412 gtk_widget_show(label); | |
| 3413 | |
| 3414 gtkchat->topic_text = gtk_entry_new(); | |
| 4635 | 3415 gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE); |
| 4359 | 3416 gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 5); |
| 3417 gtk_widget_show(gtkchat->topic_text); | |
| 3418 } | |
| 3419 | |
| 3420 /* Setup the horizontal pane. */ | |
| 3421 hpaned = gtk_hpaned_new(); | |
| 3422 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 5); | |
| 3423 gtk_widget_show(hpaned); | |
| 3424 | |
| 3425 /* Setup the scrolled window to put gtkimhtml in. */ | |
| 3426 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
| 3427 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 3428 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); | |
| 3429 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 3430 GTK_SHADOW_IN); | |
| 3431 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE); | |
| 3432 | |
| 3433 gtk_widget_set_size_request(gtkconv->sw, | |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3434 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3435 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3436 |
| 4359 | 3437 gtk_widget_show(gtkconv->sw); |
| 3438 | |
| 3439 /* Setup gtkihmtml. */ | |
| 3440 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
| 3441 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
| 3442 | |
| 3443 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3444 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 4359 | 3445 |
| 3446 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 3447 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 6057 | 3448 g_signal_connect(G_OBJECT(gtkconv->imhtml), "button_release_event", |
| 3449 G_CALLBACK(refocus_entry_cb), gtkconv); | |
| 4359 | 3450 |
| 3451 gaim_setup_imhtml(gtkconv->imhtml); | |
| 3452 | |
| 3453 gtk_widget_show(gtkconv->imhtml); | |
| 3454 | |
| 3455 /* Build the right pane. */ | |
| 3456 lbox = gtk_vbox_new(FALSE, 5); | |
|
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3457 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); |
| 4359 | 3458 gtk_widget_show(lbox); |
| 3459 | |
| 3460 /* Setup the label telling how many people are in the room. */ | |
| 3461 gtkchat->count = gtk_label_new(_("0 people in room")); | |
| 3462 gtk_box_pack_start(GTK_BOX(lbox), gtkchat->count, FALSE, FALSE, 0); | |
| 3463 gtk_widget_show(gtkchat->count); | |
| 3464 | |
| 3465 /* Setup the list of users. */ | |
| 3466 sw2 = gtk_scrolled_window_new(NULL, NULL); | |
| 3467 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2), | |
| 3468 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
| 3469 gtk_box_pack_start(GTK_BOX(lbox), sw2, TRUE, TRUE, 0); | |
| 3470 gtk_widget_show(sw2); | |
| 3471 | |
| 3472 ls = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | |
| 3473 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls), 1, | |
| 3474 GTK_SORT_ASCENDING); | |
| 3475 | |
| 3476 list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls)); | |
| 3477 | |
| 3478 rend = gtk_cell_renderer_text_new(); | |
| 3479 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 3480 "text", 0, NULL); | |
| 3481 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
| 3482 | |
| 3483 g_signal_connect(G_OBJECT(list), "button_press_event", | |
| 3484 G_CALLBACK(right_click_chat_cb), conv); | |
| 3485 | |
| 3486 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3487 | |
| 3488 col = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 3489 "text", 1, NULL); | |
| 3490 gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(col), TRUE); | |
| 3491 | |
| 3492 #if 0 | |
| 3493 g_signal_connect(G_OBJECT(list), "button_press_event", | |
| 3494 G_CALLBACK(right_click_chat), conv); | |
| 3495 #endif | |
| 3496 | |
| 3497 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); | |
| 3498 | |
| 3499 gtk_widget_set_size_request(list, 150, -1); | |
| 3500 | |
| 3501 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE); | |
| 3502 gtk_widget_show(list); | |
| 3503 | |
| 3504 gtkchat->list = list; | |
| 3505 | |
| 3506 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), list); | |
| 3507 | |
| 3508 /* Setup the user list toolbar. */ | |
| 3509 bbox = gtk_hbox_new(TRUE, 5); | |
| 3510 gtk_box_pack_start(GTK_BOX(lbox), bbox, FALSE, FALSE, 0); | |
| 3511 gtk_widget_show(bbox); | |
| 3512 | |
| 3513 /* IM */ | |
| 3514 button = gaim_pixbuf_button_from_stock(NULL, GTK_STOCK_REDO, | |
| 3515 GAIM_BUTTON_VERTICAL); | |
| 3516 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3517 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
|
3518 gtk_tooltips_set_tip(gtkconv->tooltips, button, _("IM the user"), NULL); |
| 4359 | 3519 g_signal_connect(G_OBJECT(button), "clicked", |
| 3520 G_CALLBACK(im_cb), conv); | |
| 3521 | |
| 3522 gtk_widget_show(button); | |
| 3523 | |
| 3524 /* Ignore */ | |
| 3525 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_IGNORE, | |
| 3526 GAIM_BUTTON_VERTICAL); | |
| 3527 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3528 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
|
3529 gtk_tooltips_set_tip(gtkconv->tooltips, button, |
|
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3530 _("Ignore the user"), NULL); |
| 4359 | 3531 g_signal_connect(G_OBJECT(button), "clicked", |
| 3532 G_CALLBACK(ignore_cb), conv); | |
| 3533 gtk_widget_show(button); | |
| 3534 | |
| 3535 /* Info */ | |
| 3536 button = gaim_pixbuf_button_from_stock(NULL, GAIM_STOCK_INFO, | |
| 3537 GAIM_BUTTON_VERTICAL); | |
| 3538 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 3539 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 3540 gtk_tooltips_set_tip(gtkconv->tooltips, button, | |
|
4370
d856987c72ca
[gaim-migrate @ 4636]
Christian Hammond <chipx86@chipx86.com>
parents:
4369
diff
changeset
|
3541 _("Get the user's information"), NULL); |
| 4359 | 3542 g_signal_connect(G_OBJECT(button), "clicked", |
| 3543 G_CALLBACK(info_cb), conv); | |
| 3544 | |
| 3545 gtk_widget_show(button); | |
| 3546 | |
| 3547 gtkconv->info = button; | |
| 3548 | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3549 /* Build the toolbar. */ |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3550 vbox = gtk_vbox_new(FALSE, 5); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3551 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, FALSE); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3552 gtk_widget_show(vbox); |
|
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 gtkconv->toolbar.toolbar = build_conv_toolbar(conv); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3555 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->toolbar.toolbar, |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3556 FALSE, FALSE, 0); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3557 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3558 /* Setup the entry widget. */ |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3559 frame = gtk_frame_new(NULL); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3560 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3561 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3562 gtk_widget_show(frame); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3563 |
| 7700 | 3564 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
| 3565 gtkconv->entry_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | |
|
4963
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); |
| 7700 | 3567 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); |
| 7741 | 3568 gaim_setup_imhtml(gtkconv->entry); |
| 3569 | |
| 5105 | 3570 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
|
3571 gtk_widget_set_size_request(gtkconv->entry, -1, |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3572 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3573 25)); |
| 4359 | 3574 |
| 3575 /* Connect the signal handlers. */ | |
| 3576 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event", | |
| 3577 G_CALLBACK(entry_key_pressed_cb_1), | |
| 3578 gtkconv->entry_buffer); | |
| 3579 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", | |
| 3580 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 3581 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | |
| 3582 G_CALLBACK(entry_key_pressed_cb_2), conv); | |
| 3583 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3584 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3585 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
| 4359 | 3586 |
| 3587 gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(gtkconv->entry)); | |
| 3588 gtk_widget_show(gtkconv->entry); | |
| 3589 | |
| 3590 /* Setup the bottom button box. */ | |
| 3591 gtkconv->bbox = gtk_hbox_new(FALSE, 5); | |
| 3592 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0); | |
| 3593 gtk_widget_show(gtkconv->bbox); | |
| 3594 | |
| 3595 setup_chat_buttons(conv, gtkconv->bbox); | |
| 3596 | |
| 3597 return vpaned; | |
| 3598 } | |
| 3599 | |
| 3600 static GtkWidget * | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3601 setup_im_pane(GaimConversation *conv) |
| 4359 | 3602 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3603 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3604 GaimGtkImPane *gtkim; |
| 4359 | 3605 GtkWidget *paned; |
| 3606 GtkWidget *vbox; | |
| 3607 GtkWidget *vbox2; | |
| 3608 GtkWidget *frame; | |
| 3609 | |
| 3610 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 3611 gtkim = gtkconv->u.im; | |
| 3612 | |
| 3613 /* Setup the outer pane. */ | |
| 3614 paned = gtk_vpaned_new(); | |
| 3615 gtk_widget_show(paned); | |
| 3616 | |
| 3617 /* Setup the top part of the pane. */ | |
| 3618 vbox = gtk_vbox_new(FALSE, 5); | |
|
4409
0521eec12c33
[gaim-migrate @ 4682]
Christian Hammond <chipx86@chipx86.com>
parents:
4398
diff
changeset
|
3619 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
| 4359 | 3620 gtk_widget_show(vbox); |
| 3621 | |
| 3622 /* Setup the gtkimhtml widget. */ | |
| 3623 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | |
| 3624 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 3625 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); | |
| 3626 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), | |
| 3627 GTK_SHADOW_IN); | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3628 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0); |
| 4851 | 3629 |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3630 gtk_widget_set_size_request(gtkconv->sw, |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3631 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3632 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); |
| 4359 | 3633 gtk_widget_show(gtkconv->sw); |
| 3634 | |
| 3635 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
| 3636 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
| 3637 | |
| 3638 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | |
| 3639 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 6057 | 3640 g_signal_connect(G_OBJECT(gtkconv->imhtml), "button_release_event", |
| 3641 G_CALLBACK(refocus_entry_cb), gtkconv); | |
| 4359 | 3642 |
| 3643 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3644 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
| 4359 | 3645 |
| 3646 gaim_setup_imhtml(gtkconv->imhtml); | |
| 3647 | |
| 3648 gtk_widget_show(gtkconv->imhtml); | |
| 3649 | |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3650 vbox2 = gtk_vbox_new(FALSE, 5); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3651 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, FALSE); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3652 gtk_widget_show(vbox2); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3653 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3654 /* Build the toolbar. */ |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3655 gtkconv->toolbar.toolbar = build_conv_toolbar(conv); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3656 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar.toolbar, |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3657 FALSE, FALSE, 0); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3658 |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3659 /* Setup the entry widget. */ |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3660 frame = gtk_frame_new(NULL); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3661 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3662 gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3663 gtk_widget_show(frame); |
|
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3664 |
| 7695 | 3665 gtkconv->entry = gtk_imhtml_new(NULL, NULL); |
| 3666 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
| 7741 | 3667 gaim_setup_imhtml(gtkconv->entry); |
| 7695 | 3668 gtkconv->entry_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3669 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
| 5105 | 3670 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
|
3671 gtk_widget_set_size_request(gtkconv->entry, -1, |
|
5550
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3672 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"), |
|
b18c2a37cc96
[gaim-migrate @ 5951]
Christian Hammond <chipx86@chipx86.com>
parents:
5546
diff
changeset
|
3673 25)); |
|
4963
7f5e7f2ef317
[gaim-migrate @ 5297]
Christian Hammond <chipx86@chipx86.com>
parents:
4958
diff
changeset
|
3674 |
| 4359 | 3675 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key_press_event", |
| 3676 G_CALLBACK(entry_key_pressed_cb_1), | |
| 3677 gtkconv->entry_buffer); | |
| 3678 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | |
| 3679 G_CALLBACK(entry_key_pressed_cb_2), conv); | |
| 3680 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", | |
| 3681 G_CALLBACK(entry_stop_rclick_cb), NULL); | |
| 3682 | |
| 3683 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", | |
| 3684 G_CALLBACK(insert_text_cb), conv); | |
| 3685 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", | |
| 3686 G_CALLBACK(delete_text_cb), conv); | |
| 3687 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3688 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
3689 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
| 4359 | 3690 |
| 3691 gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(gtkconv->entry)); | |
| 3692 gtk_widget_show(gtkconv->entry); | |
| 3693 | |
| 3694 gtkconv->bbox = gtk_hbox_new(FALSE, 5); | |
| 3695 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->bbox, FALSE, FALSE, 0); | |
| 3696 gtk_widget_show(gtkconv->bbox); | |
| 3697 | |
| 3698 setup_im_buttons(conv, gtkconv->bbox); | |
| 3699 | |
| 3700 return paned; | |
| 3701 } | |
| 3702 | |
| 3703 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3704 move_next_tab(GaimConversation *conv) |
| 4359 | 3705 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3706 GaimConversation *next_conv = NULL; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3707 GaimConvWindow *win; |
| 4359 | 3708 GList *l; |
| 3709 int index, i; | |
| 3710 | |
| 3711 win = gaim_conversation_get_window(conv); | |
| 3712 index = gaim_conversation_get_index(conv); | |
| 3713 | |
| 3714 /* First check the tabs after this position. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3715 for (l = g_list_nth(gaim_conv_window_get_conversations(win), index); |
| 4359 | 3716 l != NULL; |
| 3717 l = l->next) { | |
| 3718 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3719 next_conv = (GaimConversation *)l->data; |
| 4359 | 3720 |
| 3721 if (gaim_conversation_get_unseen(next_conv) > 0) | |
| 3722 break; | |
| 3723 | |
| 3724 next_conv = NULL; | |
| 3725 } | |
| 3726 | |
| 3727 if (next_conv == NULL) { | |
| 3728 | |
| 3729 /* Now check before this position. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3730 for (l = gaim_conv_window_get_conversations(win), i = 0; |
| 4359 | 3731 l != NULL && i < index; |
| 3732 l = l->next) { | |
| 3733 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3734 next_conv = (GaimConversation *)l->data; |
| 4359 | 3735 |
| 3736 if (gaim_conversation_get_unseen(next_conv) > 0) | |
| 3737 break; | |
| 3738 | |
| 3739 next_conv = NULL; | |
| 3740 } | |
| 3741 | |
| 3742 if (next_conv == NULL) { | |
| 3743 /* Okay, just grab the next conversation tab. */ | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3744 if (index == gaim_conv_window_get_conversation_count(win) - 1) |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3745 next_conv = gaim_conv_window_get_conversation_at(win, 0); |
| 4359 | 3746 else |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3747 next_conv = gaim_conv_window_get_conversation_at(win, index + 1); |
| 4359 | 3748 } |
| 3749 } | |
| 3750 | |
| 3751 if (next_conv != NULL && next_conv != conv) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3752 gaim_conv_window_switch_conversation(win, |
| 4359 | 3753 gaim_conversation_get_index(next_conv)); |
| 3754 } | |
| 3755 } | |
| 3756 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3757 static void |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3758 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
|
3759 GtkSelectionData *sd, guint info, guint t, |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3760 GaimConversation *conv) |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3761 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3762 GaimConvWindow *win = conv->window; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3763 GaimConversation *c; |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3764 |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3765 if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3766 { |
| 4781 | 3767 GaimBlistNode *n = NULL; |
| 6695 | 3768 GaimBuddy *b; |
| 4781 | 3769 memcpy(&n, sd->data, sizeof(n)); |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3770 |
| 6695 | 3771 if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
| 3772 b = gaim_contact_get_priority_buddy((GaimContact*)n); | |
| 3773 else if (GAIM_BLIST_NODE_IS_BUDDY(n)) | |
| 3774 b = (GaimBuddy*)n; | |
| 3775 else | |
| 4781 | 3776 return; |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
3777 |
|
7089
2cd3756a637b
[gaim-migrate @ 7654]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
3778 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
|
3779 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3780 gaim_conv_window_add_conversation(win, c); |
| 4702 | 3781 } |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3782 else if (sd->target == gdk_atom_intern("application/x-im-contact", FALSE)) |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3783 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3784 char *protocol = NULL; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3785 char *username = NULL; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3786 GaimAccount *account; |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3787 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3788 if (gaim_gtk_parse_x_im_contact(sd->data, FALSE, &account, |
| 7718 | 3789 &protocol, &username, NULL)) |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3790 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3791 if (account == NULL) |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3792 { |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3793 gaim_notify_error(NULL, NULL, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3794 _("You are not currently signed on with an account that " |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3795 "can add that buddy."), NULL); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3796 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3797 else |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3798 { |
| 7718 | 3799 c = gaim_conversation_new(GAIM_CONV_IM, account, username); |
| 3800 gaim_conv_window_add_conversation(win, c); | |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3801 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3802 } |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3803 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3804 if (username != NULL) g_free(username); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3805 if (protocol != NULL) g_free(protocol); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3806 |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3807 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3808 } |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3809 } |
| 4359 | 3810 |
| 3811 /************************************************************************** | |
| 3812 * GTK+ window ops | |
| 3813 **************************************************************************/ | |
| 3814 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3815 gaim_gtk_new_window(GaimConvWindow *win) |
| 4359 | 3816 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3817 GaimGtkWindow *gtkwin; |
| 4359 | 3818 GtkPositionType pos; |
| 3819 GtkWidget *testidea; | |
| 3820 GtkWidget *menubar; | |
| 3821 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3822 gtkwin = g_malloc0(sizeof(GaimGtkWindow)); |
| 4359 | 3823 |
| 3824 win->ui_data = gtkwin; | |
| 3825 | |
| 3826 /* Create the window. */ | |
| 3827 gtkwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 3828 gtk_window_set_role(GTK_WINDOW(gtkwin->window), "conversation"); | |
| 4635 | 3829 gtk_window_set_resizable(GTK_WINDOW(gtkwin->window), TRUE); |
|
4510
4c394222c732
[gaim-migrate @ 4786]
Christian Hammond <chipx86@chipx86.com>
parents:
4505
diff
changeset
|
3830 gtk_container_set_border_width(GTK_CONTAINER(gtkwin->window), 0); |
| 5173 | 3831 GTK_WINDOW(gtkwin->window)->allow_shrink = TRUE; |
| 4359 | 3832 gtk_widget_realize(gtkwin->window); |
| 3833 | |
| 3834 g_signal_connect(G_OBJECT(gtkwin->window), "delete_event", | |
| 3835 G_CALLBACK(close_win_cb), win); | |
| 3836 | |
| 3837 /* Create the notebook. */ | |
| 3838 gtkwin->notebook = gtk_notebook_new(); | |
| 3839 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
3840 pos = gaim_prefs_get_int("/gaim/gtk/conversations/tab_side"); |
| 4359 | 3841 |
| 3842 #if 0 | |
| 3843 gtk_notebook_set_tab_hborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
| 3844 gtk_notebook_set_tab_vborder(GTK_NOTEBOOK(gtkwin->notebook), 0); | |
| 3845 #endif | |
| 3846 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); | |
| 3847 gtk_notebook_set_scrollable(GTK_NOTEBOOK(gtkwin->notebook), TRUE); | |
| 3848 gtk_notebook_popup_enable(GTK_NOTEBOOK(gtkwin->notebook)); | |
| 4818 | 3849 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), FALSE); |
| 3850 | |
| 4359 | 3851 gtk_widget_show(gtkwin->notebook); |
| 3852 | |
| 3853 g_signal_connect_after(G_OBJECT(gtkwin->notebook), "switch_page", | |
| 3854 G_CALLBACK(switch_conv_cb), win); | |
| 3855 | |
| 3856 /* Setup the tab drag and drop signals. */ | |
| 4486 | 3857 gtk_widget_add_events(gtkwin->notebook, |
| 3858 GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); | |
| 3859 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_press_event", | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3860 G_CALLBACK(notebook_press_cb), win); |
| 4486 | 3861 g_signal_connect(G_OBJECT(gtkwin->notebook), "button_release_event", |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3862 G_CALLBACK(notebook_release_cb), win); |
|
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3863 |
| 4359 | 3864 testidea = gtk_vbox_new(FALSE, 0); |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
3865 |
| 4359 | 3866 /* Setup the menubar. */ |
| 3867 menubar = setup_menubar(win); | |
| 3868 gtk_box_pack_start(GTK_BOX(testidea), menubar, FALSE, TRUE, 0); | |
| 3869 | |
| 3870 gtk_box_pack_start(GTK_BOX(testidea), gtkwin->notebook, TRUE, TRUE, 0); | |
| 3871 | |
| 3872 gtk_container_add(GTK_CONTAINER(gtkwin->window), testidea); | |
| 3873 | |
| 3874 gtk_widget_show(testidea); | |
| 3875 } | |
| 3876 | |
| 3877 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3878 gaim_gtk_destroy_window(GaimConvWindow *win) |
| 4359 | 3879 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3880 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3881 |
| 3882 gtk_widget_destroy(gtkwin->window); | |
| 3883 | |
| 4630 | 3884 g_object_unref(G_OBJECT(gtkwin->menu.item_factory)); |
| 3885 | |
| 4359 | 3886 g_free(gtkwin); |
| 3887 win->ui_data = NULL; | |
| 3888 } | |
| 3889 | |
| 3890 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3891 gaim_gtk_show(GaimConvWindow *win) |
| 4359 | 3892 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3893 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3894 |
| 3895 gtk_widget_show(gtkwin->window); | |
| 7413 | 3896 |
| 3897 #ifdef _WIN32 | |
| 7415 | 3898 /* This works around a win32 gtk+ bug, where it can't handle |
| 3899 * creating the button correctly before the window is shown. | |
| 3900 * That's why we get the appearance of a button, without all | |
| 3901 * the normal button-like properties, like being able to click | |
| 7413 | 3902 * it. ;-) --Nathan */ |
| 7414 | 3903 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) { |
| 3904 GaimConversation *conv; | |
| 3905 GaimGtkConversation *gtkconv; | |
| 3906 | |
| 3907 conv = gaim_conv_window_get_conversation_at(win, 0); | |
| 3908 if(conv) { | |
| 3909 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 7415 | 3910 gtk_widget_hide(gtkconv->close); |
| 7414 | 3911 gtk_widget_show_all(gtkconv->close); |
| 3912 } | |
| 3913 } | |
| 7413 | 3914 #endif |
| 4359 | 3915 } |
| 3916 | |
| 3917 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3918 gaim_gtk_hide(GaimConvWindow *win) |
| 4359 | 3919 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3920 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3921 |
| 3922 gtk_widget_hide(gtkwin->window); | |
| 3923 } | |
| 3924 | |
| 3925 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3926 gaim_gtk_raise(GaimConvWindow *win) |
| 4359 | 3927 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3928 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3929 |
| 5484 | 3930 gtk_widget_show(gtkwin->window); |
| 5103 | 3931 gtk_window_deiconify(GTK_WINDOW(gtkwin->window)); |
| 4526 | 3932 gdk_window_raise(gtkwin->window->window); |
| 4359 | 3933 } |
| 3934 | |
| 3935 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3936 gaim_gtk_flash(GaimConvWindow *win) |
| 4359 | 3937 { |
| 3938 #ifdef _WIN32 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3939 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3940 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3941 wgaim_conv_im_blink(gtkwin->window); |
| 4359 | 3942 #endif |
| 3943 } | |
| 3944 | |
| 3945 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3946 gaim_gtk_switch_conversation(GaimConvWindow *win, unsigned int index) |
| 4359 | 3947 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3948 GaimGtkWindow *gtkwin; |
| 4359 | 3949 |
| 3950 gtkwin = GAIM_GTK_WINDOW(win); | |
| 3951 | |
| 3952 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
| 3953 } | |
| 3954 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3955 static const GtkTargetEntry te[] = |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3956 { |
| 7695 | 3957 {"text/plain", 0, 0}, |
| 3958 {"text/uri-list", 0, 1}, | |
|
7712
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3959 {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 2}, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3960 {"STRING", 0, 3}, |
|
2823111061ba
[gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents:
7700
diff
changeset
|
3961 {"application/x-im-contact", 0, 4} |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3962 }; |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
3963 |
| 4359 | 3964 static void |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
3965 gaim_gtk_add_conversation(GaimConvWindow *win, GaimConversation *conv) |
| 4359 | 3966 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3967 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3968 GaimGtkConversation *gtkconv, *focus_gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3969 GaimConversation *focus_conv; |
| 4359 | 3970 GtkWidget *pane = NULL; |
| 3971 GtkWidget *tab_cont; | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
3972 GtkWidget *tabby, *menu_tabby; |
| 4359 | 3973 gboolean new_ui; |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3974 GaimConversationType conv_type; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3975 const char *name; |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3976 |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3977 name = gaim_conversation_get_name(conv); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3978 conv_type = gaim_conversation_get_type(conv); |
|
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
3979 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 3980 |
| 3981 if (conv->ui_data != NULL) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3982 gtkconv = (GaimGtkConversation *)conv->ui_data; |
| 4359 | 3983 |
| 3984 tab_cont = gtkconv->tab_cont; | |
| 3985 | |
| 3986 new_ui = FALSE; | |
| 3987 } | |
| 3988 else { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
3989 gtkconv = g_malloc0(sizeof(GaimGtkConversation)); |
| 4359 | 3990 conv->ui_data = gtkconv; |
| 3991 | |
| 3992 /* Setup some initial variables. */ | |
| 3993 gtkconv->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
| 3994 gtkconv->tooltips = gtk_tooltips_new(); | |
| 3995 | |
| 4421 | 3996 /* Setup the foreground and background colors */ |
| 3997 gaim_gtkconv_update_font_colors(conv); | |
| 3998 | |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
3999 /* Setup the font face */ |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4000 gaim_gtkconv_update_font_face(conv); |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
4001 |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4002 if (conv_type == GAIM_CONV_CHAT) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4003 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane)); |
| 4359 | 4004 |
| 4005 pane = setup_chat_pane(conv); | |
| 4006 } | |
|
4383
f7a84034f97f
[gaim-migrate @ 4649]
Christian Hammond <chipx86@chipx86.com>
parents:
4382
diff
changeset
|
4007 else if (conv_type == GAIM_CONV_IM) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4008 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane)); |
| 4359 | 4009 gtkconv->u.im->a_virgin = TRUE; |
| 4010 | |
| 4011 pane = setup_im_pane(conv); | |
| 4012 } | |
| 4013 | |
| 4014 if (pane == NULL) { | |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4015 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat); |
|
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4016 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im); |
| 4359 | 4017 |
| 4018 g_free(gtkconv); | |
| 4019 conv->ui_data = NULL; | |
| 4020 | |
| 4021 return; | |
| 4022 } | |
| 4023 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4024 /* Setup drag-and-drop */ |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4025 gtk_drag_dest_set(pane, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4026 GTK_DEST_DEFAULT_MOTION | |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4027 GTK_DEST_DEFAULT_DROP, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4028 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4029 GDK_ACTION_COPY); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4030 gtk_drag_dest_set(gtkconv->imhtml, |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4031 GTK_DEST_DEFAULT_MOTION | |
| 4702 | 4032 GTK_DEST_DEFAULT_DROP, |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4033 te, sizeof(te) / sizeof(GtkTargetEntry), |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4034 GDK_ACTION_DEFAULT | GDK_ACTION_COPY | GDK_ACTION_MOVE); |
| 7695 | 4035 gtk_drag_dest_set(gtkconv->entry, |
| 4036 GTK_DEST_DEFAULT_MOTION | | |
| 4037 GTK_DEST_DEFAULT_DROP, | |
| 4038 te, sizeof(te) / sizeof(GtkTargetEntry), | |
| 4039 GDK_ACTION_COPY); | |
| 4040 | |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4041 g_signal_connect(G_OBJECT(pane), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4042 G_CALLBACK(conv_dnd_recv), conv); |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4043 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4044 G_CALLBACK(conv_dnd_recv), conv); |
| 7695 | 4045 #if 0 |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4046 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", |
|
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4047 G_CALLBACK(conv_dnd_recv), conv); |
| 7695 | 4048 #endif |
|
4689
69b19e132df0
[gaim-migrate @ 5000]
Christian Hammond <chipx86@chipx86.com>
parents:
4687
diff
changeset
|
4049 |
| 4359 | 4050 /* Setup the container for the tab. */ |
| 4051 gtkconv->tab_cont = tab_cont = gtk_vbox_new(FALSE, 5); | |
| 4052 gtk_container_set_border_width(GTK_CONTAINER(tab_cont), 5); | |
| 4053 gtk_container_add(GTK_CONTAINER(tab_cont), pane); | |
| 4054 gtk_widget_show(pane); | |
| 4055 | |
| 4056 new_ui = TRUE; | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4057 |
| 4359 | 4058 gtkconv->make_sound = TRUE; |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
4059 |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4060 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4061 "/gaim/gtk/conversations/show_formatting_toolbar"); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4062 |
|
5902
6889b89cab90
[gaim-migrate @ 6334]
Christian Hammond <chipx86@chipx86.com>
parents:
5901
diff
changeset
|
4063 g_signal_connect_swapped(G_OBJECT(pane), "focus", |
| 7143 | 4064 G_CALLBACK(gtk_widget_grab_focus), |
| 4065 gtkconv->entry); | |
| 4359 | 4066 } |
| 4067 | |
| 4068 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 5); | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4069 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 5); |
| 4359 | 4070 |
| 4071 /* Close button. */ | |
| 4072 gtkconv->close = gtk_button_new(); | |
| 4073 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16); | |
|
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4074 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE); |
| 4359 | 4075 gtk_container_add(GTK_CONTAINER(gtkconv->close), |
| 4445 | 4076 gtk_image_new_from_stock(GTK_STOCK_CLOSE, |
| 4077 GTK_ICON_SIZE_MENU)); | |
| 4359 | 4078 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, |
|
4572
06084165a966
[gaim-migrate @ 4853]
Christian Hammond <chipx86@chipx86.com>
parents:
4571
diff
changeset
|
4079 _("Close conversation"), NULL); |
| 4359 | 4080 |
| 4081 g_signal_connect(G_OBJECT(gtkconv->close), "clicked", | |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4082 G_CALLBACK(close_conv_cb), conv); |
| 4359 | 4083 |
|
7446
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4084 /* |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4085 * I love Galeon. They have a fix for that stupid annoying visible |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4086 * border bug. I love you guys! -- ChipX86 |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4087 */ |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4088 g_signal_connect(G_OBJECT(gtkconv->close), "state_changed", |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4089 G_CALLBACK(tab_close_button_state_changed_cb), NULL); |
|
064c697cc223
[gaim-migrate @ 8057]
Christian Hammond <chipx86@chipx86.com>
parents:
7440
diff
changeset
|
4090 |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4091 /* Status icon. */ |
| 6440 | 4092 gtkconv->icon = gtk_image_new(); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4093 gtkconv->menu_icon = gtk_image_new(); |
| 6440 | 4094 update_tab_icon(conv); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4095 |
| 4359 | 4096 /* Tab label. */ |
| 4097 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
|
4098 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); |
| 4359 | 4099 #if 0 |
| 4100 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); | |
| 4101 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); | |
| 4102 #endif | |
| 4103 | |
|
4939
4d50e125b0fa
[gaim-migrate @ 5273]
Christian Hammond <chipx86@chipx86.com>
parents:
4931
diff
changeset
|
4104 |
| 4359 | 4105 /* Pack it all together. */ |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4106 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
|
4107 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
|
4108 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
|
4109 gtk_widget_show_all(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4110 gtk_widget_show_all(gtkconv->menu_icon); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4111 } |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4112 |
| 4359 | 4113 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
|
4114 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); |
| 4445 | 4115 gtk_widget_show(gtkconv->tab_label); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4116 gtk_widget_show(gtkconv->menu_label); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4117 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
|
4118 |
| 4445 | 4119 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
|
4120 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) |
| 4445 | 4121 gtk_widget_show_all(gtkconv->close); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4122 |
| 4445 | 4123 gtk_widget_show(tabby); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4124 gtk_widget_show(menu_tabby); |
| 4359 | 4125 |
| 7143 | 4126 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
| 4127 gaim_gtkconv_update_buddy_icon(conv); | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4128 |
| 4359 | 4129 /* Add this pane to the conversations notebook. */ |
| 4130 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
|
4131 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, menu_tabby); |
| 4359 | 4132 |
| 4133 gtk_widget_show(tab_cont); | |
| 4134 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4135 if (gaim_conv_window_get_conversation_count(win) == 1) { |
| 4818 | 4136 /* Er, bug in notebooks? Switch to the page manually. */ |
| 4359 | 4137 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkwin->notebook), 0); |
| 4851 | 4138 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4139 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4140 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4141 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4142 else |
| 4818 | 4143 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), TRUE); |
| 4359 | 4144 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4145 focus_conv = g_list_nth_data(gaim_conv_window_get_conversations(win), |
| 5204 | 4146 gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook))); |
| 4147 focus_gtkconv = GAIM_GTK_CONVERSATION(focus_conv); | |
| 4148 gtk_widget_grab_focus(focus_gtkconv->entry); | |
| 4359 | 4149 |
| 4150 if (!new_ui) | |
| 4151 g_object_unref(gtkconv->tab_cont); | |
| 4152 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4153 if (gaim_conv_window_get_conversation_count(win) == 1) |
| 4685 | 4154 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 4155 } |
| 4156 | |
| 4157 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4158 gaim_gtk_remove_conversation(GaimConvWindow *win, GaimConversation *conv) |
| 4359 | 4159 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4160 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4161 GaimGtkConversation *gtkconv; |
| 4359 | 4162 unsigned int index; |
| 4818 | 4163 GaimConversationType conv_type; |
| 4164 | |
| 4165 conv_type = gaim_conversation_get_type(conv); | |
| 4359 | 4166 index = gaim_conversation_get_index(conv); |
| 4167 | |
| 4168 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4169 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4170 | |
| 4171 g_object_ref(gtkconv->tab_cont); | |
| 4172 gtk_object_sink(GTK_OBJECT(gtkconv->tab_cont)); | |
| 4173 | |
| 4174 gtk_notebook_remove_page(GTK_NOTEBOOK(gtkwin->notebook), index); | |
| 4175 | |
| 4818 | 4176 /* go back to tabless if need be */ |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4177 if (gaim_conv_window_get_conversation_count(win) <= 2) { |
| 4818 | 4178 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkwin->notebook), |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4179 gaim_prefs_get_bool("/gaim/gtk/conversations/tabs")); |
| 4818 | 4180 } |
| 4181 | |
| 4182 | |
| 4359 | 4183 /* If this window is setup with an inactive gc, regenerate the menu. */ |
| 4818 | 4184 if (conv_type == GAIM_CONV_IM && |
| 4359 | 4185 gaim_conversation_get_gc(conv) == NULL) { |
| 4186 | |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
4187 generate_send_as_items(win, conv); |
| 4359 | 4188 } |
| 4189 } | |
| 4190 | |
| 4191 static void | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4192 gaim_gtk_move_conversation(GaimConvWindow *win, GaimConversation *conv, |
| 4359 | 4193 unsigned int new_index) |
| 4194 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4195 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4196 GaimGtkConversation *gtkconv; |
| 4359 | 4197 |
| 4198 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4199 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4200 | |
|
4415
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4201 if (new_index > gaim_conversation_get_index(conv)) |
|
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4202 new_index--; |
|
c90039137172
[gaim-migrate @ 4688]
Christian Hammond <chipx86@chipx86.com>
parents:
4409
diff
changeset
|
4203 |
| 4359 | 4204 gtk_notebook_reorder_child(GTK_NOTEBOOK(gtkwin->notebook), |
| 4205 gtkconv->tab_cont, new_index); | |
| 4206 } | |
| 4207 | |
| 4208 static int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4209 gaim_gtk_get_active_index(const GaimConvWindow *win) |
| 4359 | 4210 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4211 GaimGtkWindow *gtkwin; |
|
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4212 int index; |
| 4359 | 4213 |
| 4214 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4215 | |
|
5680
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4216 index = gtk_notebook_get_current_page(GTK_NOTEBOOK(gtkwin->notebook)); |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4217 |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4218 /* |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4219 * A fix, because the first conversation may be active, but not |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4220 * appear in the notebook just yet. -- ChipX86 |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4221 */ |
|
71cc0d5376c2
[gaim-migrate @ 6098]
Christian Hammond <chipx86@chipx86.com>
parents:
5678
diff
changeset
|
4222 return (index == -1 ? 0 : index); |
| 4359 | 4223 } |
| 4224 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4225 static GaimConvWindowUiOps window_ui_ops = |
| 4359 | 4226 { |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4227 gaim_gtk_conversations_get_conv_ui_ops, |
| 4359 | 4228 gaim_gtk_new_window, |
| 4229 gaim_gtk_destroy_window, | |
| 4230 gaim_gtk_show, | |
| 4231 gaim_gtk_hide, | |
| 4232 gaim_gtk_raise, | |
| 4233 gaim_gtk_flash, | |
| 4234 gaim_gtk_switch_conversation, | |
| 4235 gaim_gtk_add_conversation, | |
| 4236 gaim_gtk_remove_conversation, | |
| 4237 gaim_gtk_move_conversation, | |
| 4238 gaim_gtk_get_active_index | |
| 4239 }; | |
| 4240 | |
| 4241 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4242 update_convo_add_button(GaimConversation *conv) |
| 4359 | 4243 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4244 GaimPluginProtocolInfo *prpl_info = NULL; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4245 GaimConvWindow *win; |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4246 GaimGtkWindow *gtkwin; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4247 GaimGtkConversation *gtkconv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4248 GaimConnection *gc; |
| 4359 | 4249 GaimConversationType type; |
| 4250 GtkWidget *parent; | |
| 4251 | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4252 gc = gaim_conversation_get_gc(conv); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4253 win = gaim_conversation_get_window(conv); |
| 4359 | 4254 type = gaim_conversation_get_type(conv); |
| 4255 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4256 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4257 parent = gtk_widget_get_parent(gtkconv->u.im->add); |
| 4258 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4259 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4260 |
| 4687 | 4261 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
|
4262 gtkconv->u.im->add = |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4263 gaim_gtk_change_text(_("Remove"), gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4264 GTK_STOCK_REMOVE, type); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4265 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4266 _("Remove the user from your buddy list"), NULL); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4267 |
| 4359 | 4268 gtk_widget_set_sensitive(gtkconv->u.im->add, |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4269 (gc != NULL && prpl_info->remove_buddy != NULL)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4270 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4271 if (gaim_conv_window_get_active_conversation(win) == conv) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4272 gtk_widget_show(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4273 gtk_widget_hide(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4274 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4275 } |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4276 else { |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4277 gtkconv->u.im->add = |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4278 gaim_gtk_change_text(_("Add"), gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4279 GTK_STOCK_ADD, type); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4280 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4281 _("Add the user to your buddy list"), NULL); |
| 4359 | 4282 |
| 4283 gtk_widget_set_sensitive(gtkconv->u.im->add, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4284 (gc != NULL && prpl_info->add_buddy != NULL)); |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4285 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4286 if (gaim_conv_window_get_active_conversation(win) == conv) { |
|
5908
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4287 gtk_widget_show(gtkwin->menu.add); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4288 gtk_widget_hide(gtkwin->menu.remove); |
|
ed8a9a3bf7e2
[gaim-migrate @ 6340]
Christian Hammond <chipx86@chipx86.com>
parents:
5907
diff
changeset
|
4289 } |
| 4359 | 4290 } |
| 4291 | |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4292 g_signal_connect(G_OBJECT(gtkconv->u.im->add), "clicked", |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4293 G_CALLBACK(add_cb), conv); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4294 |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4295 gtk_box_pack_start(GTK_BOX(parent), gtkconv->u.im->add, |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4296 FALSE, FALSE, 0); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
4297 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
|
4298 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
|
4299 gtk_size_group_add_widget(gtkconv->sg, gtkconv->u.im->add); |
| 4359 | 4300 } |
| 4301 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4302 GaimConvWindowUiOps * |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
4303 gaim_gtk_conversations_get_win_ui_ops(void) |
| 4359 | 4304 { |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4305 return &window_ui_ops; |
| 4359 | 4306 } |
| 4307 | |
| 4308 /************************************************************************** | |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
4309 * Conversation UI operations |
| 4359 | 4310 **************************************************************************/ |
| 4311 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4312 gaim_gtkconv_destroy(GaimConversation *conv) |
| 4359 | 4313 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4314 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4359 | 4315 |
| 4316 if (gtkconv->dialogs.fg_color != NULL) | |
| 4317 gtk_widget_destroy(gtkconv->dialogs.fg_color); | |
| 4318 | |
| 4319 if (gtkconv->dialogs.bg_color != NULL) | |
| 4320 gtk_widget_destroy(gtkconv->dialogs.bg_color); | |
| 4321 | |
| 4322 if (gtkconv->dialogs.font != NULL) | |
| 4323 gtk_widget_destroy(gtkconv->dialogs.font); | |
| 4324 | |
| 5959 | 4325 if (gtkconv->dialogs.image != NULL) |
| 4326 gtk_widget_destroy(gtkconv->dialogs.image); | |
| 4327 | |
| 4359 | 4328 if (gtkconv->dialogs.smiley != NULL) |
| 4329 gtk_widget_destroy(gtkconv->dialogs.smiley); | |
| 4330 | |
| 4331 if (gtkconv->dialogs.link != NULL) | |
| 4332 gtk_widget_destroy(gtkconv->dialogs.link); | |
| 4333 | |
| 4334 if (gtkconv->dialogs.log != NULL) | |
| 4335 gtk_widget_destroy(gtkconv->dialogs.log); | |
| 4336 | |
| 7295 | 4337 if (gtkconv->dialogs.search != NULL) |
| 4338 gtk_widget_destroy(gtkconv->dialogs.search); | |
| 4339 | |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4340 gtk_widget_destroy(gtkconv->tab_cont); |
| 4892 | 4341 g_object_unref(gtkconv->tab_cont); |
|
4571
51e988d015ed
[gaim-migrate @ 4852]
Christian Hammond <chipx86@chipx86.com>
parents:
4561
diff
changeset
|
4342 |
| 4359 | 4343 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
| 4755 | 4344 if (gtkconv->u.im->icon_timer != 0) |
| 4345 g_source_remove(gtkconv->u.im->icon_timer); | |
| 4346 | |
| 4359 | 4347 if (gtkconv->u.im->save_icon != NULL) |
| 4348 gtk_widget_destroy(gtkconv->u.im->save_icon); | |
| 4349 | |
| 4350 if (gtkconv->u.im->anim != NULL) | |
| 4793 | 4351 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 4359 | 4352 |
| 4353 g_free(gtkconv->u.im); | |
| 4354 } | |
| 4355 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 4356 g_free(gtkconv->u.chat); | |
| 4357 } | |
| 4358 | |
| 4633 | 4359 gtk_object_sink(GTK_OBJECT(gtkconv->tooltips)); |
| 4360 | |
| 4359 | 4361 g_free(gtkconv); |
| 4362 } | |
| 4363 | |
| 4364 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4365 gaim_gtkconv_write_im(GaimConversation *conv, const char *who, |
| 6982 | 4366 const char *message, GaimMessageFlags flags, |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4367 time_t mtime) |
| 4359 | 4368 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4369 GaimGtkConversation *gtkconv; |
| 4359 | 4370 |
| 4371 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4372 | |
| 6621 | 4373 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4374 gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events")) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4375 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4376 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4377 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4378 |
|
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4379 /* Play a sound, if specified in prefs. */ |
| 4359 | 4380 if (gtkconv->make_sound) { |
| 6621 | 4381 if (flags & GAIM_MESSAGE_RECV) { |
| 4359 | 4382 if (gtkconv->u.im->a_virgin && |
| 5820 | 4383 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/first_im_recv")) { |
| 4359 | 4384 |
| 4561 | 4385 gaim_sound_play_event(GAIM_SOUND_FIRST_RECEIVE); |
| 4359 | 4386 } |
| 4387 else | |
| 4561 | 4388 gaim_sound_play_event(GAIM_SOUND_RECEIVE); |
| 4359 | 4389 } |
| 4390 else { | |
| 4561 | 4391 gaim_sound_play_event(GAIM_SOUND_SEND); |
| 4359 | 4392 } |
| 4393 } | |
| 4394 | |
| 4395 gtkconv->u.im->a_virgin = FALSE; | |
| 4396 | |
| 6982 | 4397 gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4398 } |
| 4399 | |
| 4400 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4401 gaim_gtkconv_write_chat(GaimConversation *conv, const char *who, |
| 6621 | 4402 const char *message, GaimMessageFlags flags, time_t mtime) |
| 4359 | 4403 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4404 GaimGtkConversation *gtkconv; |
| 4359 | 4405 |
| 4406 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 4407 | |
|
4382
76223649765b
[gaim-migrate @ 4648]
Christian Hammond <chipx86@chipx86.com>
parents:
4378
diff
changeset
|
4408 /* Play a sound, if specified in prefs. */ |
| 4359 | 4409 if (gtkconv->make_sound) { |
| 6621 | 4410 if (!(flags & GAIM_MESSAGE_WHISPER) && (flags & GAIM_MESSAGE_SEND)) |
| 4561 | 4411 gaim_sound_play_event(GAIM_SOUND_CHAT_YOU_SAY); |
| 6621 | 4412 else if (flags & GAIM_MESSAGE_RECV) { |
| 4413 if ((flags & GAIM_MESSAGE_NICK) && | |
| 6102 | 4414 gaim_prefs_get_bool("/gaim/gtk/sound/enabled/nick_said")) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4415 |
| 4561 | 4416 gaim_sound_play_event(GAIM_SOUND_CHAT_NICK); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4417 } |
| 4359 | 4418 else |
| 4561 | 4419 gaim_sound_play_event(GAIM_SOUND_CHAT_SAY); |
| 4359 | 4420 } |
| 4421 } | |
| 4422 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4423 if (gaim_prefs_get_bool("/gaim/gtk/conversations/chat/color_nicks")) |
| 6621 | 4424 flags |= GAIM_MESSAGE_COLORIZE; |
| 4359 | 4425 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4426 /* Raise the window, if specified in prefs. */ |
| 6621 | 4427 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4428 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) { |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4429 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4430 gaim_conv_window_raise(gaim_conversation_get_window(conv)); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4431 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4432 |
| 6982 | 4433 gaim_conversation_write(conv, who, message, flags, mtime); |
| 4359 | 4434 } |
| 4435 | |
| 4436 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4437 gaim_gtkconv_write_conv(GaimConversation *conv, const char *who, |
| 6982 | 4438 const char *message, GaimMessageFlags flags, |
| 4359 | 4439 time_t mtime) |
| 4440 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4441 GaimGtkConversation *gtkconv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4442 GaimConvWindow *win; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
4443 GaimConnection *gc; |
| 4359 | 4444 int gtk_font_options = 0; |
| 6982 | 4445 GSList *images = NULL; |
| 7440 | 4446 char buf[BUF_LONG]; |
| 4359 | 4447 char buf2[BUF_LONG]; |
| 4448 char mdate[64]; | |
| 4449 char color[10]; | |
| 4450 char *str; | |
| 4451 char *with_font_tag; | |
| 4896 | 4452 char *sml_attrib = NULL; |
| 6982 | 4453 size_t length = strlen(message) + 1; |
| 4895 | 4454 |
| 4359 | 4455 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4456 gc = gaim_conversation_get_gc(conv); | |
| 4457 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4458 win = gaim_conversation_get_window(conv); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4459 |
| 6621 | 4460 if (!(flags & GAIM_MESSAGE_NO_LOG) && |
| 7431 | 4461 ((gaim_conversation_get_type(conv) == GAIM_CONV_CHAT && |
| 4462 gaim_prefs_get_bool("/gaim/gtk/conversations/chat/raise_on_events")) || | |
| 4463 (gaim_conversation_get_type(conv) == GAIM_CONV_IM && | |
| 4464 (gaim_prefs_get_bool("/gaim/gtk/conversations/im/raise_on_events") || | |
| 4465 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
|
4466 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4467 gaim_conv_window_show(win); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4468 } |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4469 |
| 7078 | 4470 if (flags & GAIM_MESSAGE_IMAGES) |
| 4471 gaim_gtk_find_images(message, &images); | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4472 |
| 5133 | 4473 if(time(NULL) > mtime + 20*60) /* show date if older than 20 minutes */ |
| 4474 strftime(mdate, sizeof(mdate), "%Y-%m-%d %H:%M:%S", localtime(&mtime)); | |
| 4475 else | |
| 4476 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); | |
| 4359 | 4477 |
| 4896 | 4478 if(gc) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
4479 sml_attrib = g_strdup_printf("sml=\"%s\"", gc->prpl->info->name); |
| 7440 | 4480 |
| 4359 | 4481 gtk_font_options ^= GTK_IMHTML_NO_COMMENTS; |
| 4482 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4483 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_colors")) |
| 4359 | 4484 gtk_font_options ^= GTK_IMHTML_NO_COLOURS; |
| 4485 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4486 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_fonts")) |
| 4359 | 4487 gtk_font_options ^= GTK_IMHTML_NO_FONTS; |
| 4488 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4489 if (gaim_prefs_get_bool("/gaim/gtk/conversations/ignore_font_sizes")) |
| 4359 | 4490 gtk_font_options ^= GTK_IMHTML_NO_SIZES; |
| 4491 | |
| 6185 | 4492 if (GAIM_PLUGIN_PROTOCOL_INFO(gaim_find_prpl(gaim_account_get_protocol(conv->account)))->options & |
| 7431 | 4493 OPT_PROTO_USE_POINTSIZE) { |
| 5367 | 4494 gtk_font_options ^= GTK_IMHTML_USE_POINTSIZE; |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4495 } |
| 4359 | 4496 |
| 6621 | 4497 if (flags & GAIM_MESSAGE_SYSTEM) { |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4498 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
| 5329 | 4499 g_snprintf(buf, BUF_LONG, "(%s) <B>%s</B>", |
| 7431 | 4500 mdate, message); |
| 4359 | 4501 else |
| 4502 g_snprintf(buf, BUF_LONG, "<B>%s</B>", message); | |
| 7440 | 4503 |
| 4359 | 4504 g_snprintf(buf2, sizeof(buf2), |
| 7431 | 4505 "<!--(%s) --><B>%s</B><BR>", |
| 4506 mdate, message); | |
| 7440 | 4507 |
| 6982 | 4508 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images); |
| 7440 | 4509 |
| 7583 | 4510 /* Add the message to a conversations scrollback buffer */ |
| 4511 conv->history = g_string_append(conv->history, buf); | |
| 4512 conv->history = g_string_append(conv->history, "<BR>\n"); | |
| 7440 | 4513 |
| 7431 | 4514 } else if (flags & GAIM_MESSAGE_NO_LOG) { |
| 4359 | 4515 g_snprintf(buf, BUF_LONG, |
| 7431 | 4516 "<B><FONT COLOR=\"#777777\">%s</FONT></B><BR>", |
| 4517 message); | |
| 7440 | 4518 |
| 6982 | 4519 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf, 0, images); |
| 4359 | 4520 } |
| 4521 else { | |
| 4895 | 4522 char *new_message = g_memdup(message, length); |
| 7440 | 4523 |
| 6621 | 4524 if (flags & GAIM_MESSAGE_WHISPER) { |
| 4359 | 4525 str = g_malloc(1024); |
| 7440 | 4526 |
| 4359 | 4527 /* If we're whispering, it's not an autoresponse. */ |
| 7564 | 4528 if (gaim_message_meify(new_message, length)) { |
| 4359 | 4529 g_snprintf(str, 1024, "***%s", who); |
| 4530 strcpy(color, "#6C2585"); | |
| 4531 } | |
| 4532 else { | |
| 4533 g_snprintf(str, 1024, "*%s*:", who); | |
| 4534 strcpy(color, "#00FF00"); | |
| 4535 } | |
| 7440 | 4536 } |
| 4359 | 4537 else { |
| 7564 | 4538 if (gaim_message_meify(new_message, length)) { |
| 4359 | 4539 str = g_malloc(1024); |
| 7440 | 4540 |
| 6621 | 4541 if (flags & GAIM_MESSAGE_AUTO_RESP) |
| 4359 | 4542 g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, who); |
| 4543 else | |
| 4544 g_snprintf(str, 1024, "***%s", who); | |
| 7440 | 4545 |
| 6621 | 4546 if (flags & GAIM_MESSAGE_NICK) |
| 4359 | 4547 strcpy(color, "#AF7F00"); |
| 4548 else | |
| 4549 strcpy(color, "#062585"); | |
| 4550 } | |
| 4551 else { | |
| 4552 str = g_malloc(1024); | |
| 6621 | 4553 if (flags & GAIM_MESSAGE_AUTO_RESP) |
| 4359 | 4554 g_snprintf(str, 1024, "%s %s", who, AUTO_RESPONSE); |
| 4555 else | |
| 4556 g_snprintf(str, 1024, "%s:", who); | |
| 6621 | 4557 if (flags & GAIM_MESSAGE_NICK) |
| 4359 | 4558 strcpy(color, "#AF7F00"); |
| 6621 | 4559 else if (flags & GAIM_MESSAGE_RECV) { |
| 4560 if (flags & GAIM_MESSAGE_COLORIZE) { | |
| 4359 | 4561 const char *u; |
| 4562 int m = 0; | |
| 7440 | 4563 |
| 4359 | 4564 for (u = who; *u != '\0'; u++) |
| 4565 m += *u; | |
| 7440 | 4566 |
| 4359 | 4567 m = m % NUM_NICK_COLORS; |
| 7440 | 4568 |
| 4359 | 4569 strcpy(color, nick_colors[m]); |
| 4570 } | |
| 4571 else | |
| 4572 strcpy(color, "#A82F2F"); | |
| 4573 } | |
| 6621 | 4574 else if (flags & GAIM_MESSAGE_SEND) |
| 4359 | 4575 strcpy(color, "#16569E"); |
| 4576 } | |
| 4577 } | |
| 7440 | 4578 |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
4579 if (gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")) |
| 4359 | 4580 g_snprintf(buf, BUF_LONG, |
| 7431 | 4581 "<FONT COLOR=\"%s\" %s>(%s) " |
| 4582 "<B>%s</B></FONT> ", color, | |
| 4583 sml_attrib ? sml_attrib : "", mdate, str); | |
| 4359 | 4584 else |
| 4585 g_snprintf(buf, BUF_LONG, | |
| 7431 | 4586 "<FONT COLOR=\"%s\" %s><B>%s</B></FONT> ", color, |
| 4587 sml_attrib ? sml_attrib : "", str); | |
| 7440 | 4588 |
| 4359 | 4589 g_snprintf(buf2, BUF_LONG, |
| 7431 | 4590 "<FONT COLOR=\"%s\" %s><!--(%s) -->" |
| 4591 "<B>%s</B></FONT> ", | |
| 4592 color, sml_attrib ? sml_attrib : "", mdate, str); | |
| 7440 | 4593 |
| 4359 | 4594 g_free(str); |
| 4595 | |
| 6982 | 4596 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), buf2, 0, images); |
| 4359 | 4597 |
| 4895 | 4598 if(gc){ |
| 4896 | 4599 char *pre = g_strdup_printf("<font %s>", sml_attrib ? sml_attrib : ""); |
| 4895 | 4600 char *post = "</font>"; |
| 4601 int pre_len = strlen(pre); | |
| 4602 int post_len = strlen(post); | |
| 7440 | 4603 |
| 4895 | 4604 with_font_tag = g_malloc(length + pre_len + post_len + 1); |
| 7440 | 4605 |
| 4895 | 4606 strcpy(with_font_tag, pre); |
| 4607 memcpy(with_font_tag + pre_len, new_message, length); | |
| 4608 strcpy(with_font_tag + pre_len + length, post); | |
| 7440 | 4609 |
| 4895 | 4610 length += pre_len + post_len; |
| 4611 g_free(pre); | |
| 4612 } | |
| 4608 | 4613 else |
| 4895 | 4614 with_font_tag = g_memdup(new_message, length); |
| 7440 | 4615 |
| 7589 | 4616 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->imhtml), |
| 7431 | 4617 with_font_tag, gtk_font_options, images); |
| 7440 | 4618 |
| 6982 | 4619 gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", 0); |
| 7440 | 4620 |
| 7431 | 4621 /*conv->history = g_string_append(conv->history, t1); |
| 4622 conv->history = g_string_append(conv->history, t2); | |
| 4623 conv->history = g_string_append(conv->history, "\n"); | |
| 7440 | 4624 |
| 7431 | 4625 g_free(t1); |
| 4626 g_free(t2); */ | |
| 7440 | 4627 |
| 4628 g_free(with_font_tag); | |
| 7447 | 4629 g_free(new_message); |
| 7440 | 4630 } |
| 4631 | |
| 6062 | 4632 |
| 5012 | 4633 if(sml_attrib) |
| 4634 g_free(sml_attrib); | |
| 6982 | 4635 |
| 4636 if (images) { | |
| 7078 | 4637 GSList *tmp; |
| 4638 | |
| 4639 for (tmp = images; tmp; tmp = tmp->next) { | |
| 4640 GdkPixbuf *pixbuf = tmp->data; | |
| 4641 if(pixbuf) | |
| 4642 g_object_unref(pixbuf); | |
| 6982 | 4643 } |
| 7078 | 4644 |
| 6982 | 4645 g_slist_free(images); |
| 4646 } | |
| 4359 | 4647 } |
| 4648 | |
| 4649 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4650 gaim_gtkconv_chat_add_user(GaimConversation *conv, const char *user) |
| 4359 | 4651 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4652 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4653 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4654 GaimGtkChatPane *gtkchat; |
| 4359 | 4655 char tmp[BUF_LONG]; |
| 4656 int num_users; | |
| 4657 int pos; | |
| 4658 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4659 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4660 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4661 gtkchat = gtkconv->u.chat; | |
| 4662 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4663 num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
| 4359 | 4664 |
| 4665 g_snprintf(tmp, sizeof(tmp), | |
| 4666 ngettext("%d person in room", "%d people in room", | |
| 4667 num_users), | |
| 4668 num_users); | |
| 4669 | |
| 4670 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
| 4671 | |
| 4672 if (gtkconv->make_sound) | |
| 4561 | 4673 gaim_sound_play_event(GAIM_SOUND_CHAT_JOIN); |
| 4359 | 4674 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4675 pos = g_list_index(gaim_conv_chat_get_users(chat), user); |
| 4359 | 4676 |
| 4677 add_chat_buddy_common(conv, user, pos); | |
| 4678 } | |
| 4679 | |
| 4680 static void | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4681 gaim_gtkconv_chat_add_users(GaimConversation *conv, GList *users) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4682 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4683 GaimConvChat *chat; |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4684 GaimGtkConversation *gtkconv; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4685 GaimGtkChatPane *gtkchat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4686 GList *l; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4687 char tmp[BUF_LONG]; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4688 int num_users; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4689 int pos; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4690 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4691 chat = GAIM_CONV_CHAT(conv); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4692 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4693 gtkchat = gtkconv->u.chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4694 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4695 num_users = g_list_length(gaim_conv_chat_get_users(chat)); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4696 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4697 g_snprintf(tmp, sizeof(tmp), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4698 ngettext("%d person in room", "%d people in room", |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4699 num_users), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4700 num_users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4701 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4702 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4703 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4704 for (l = users; l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4705 pos = g_list_index(gaim_conv_chat_get_users(chat), (char *)l->data); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4706 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4707 add_chat_buddy_common(conv, (char *)l->data, pos); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4708 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4709 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4710 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4711 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4712 gaim_gtkconv_chat_rename_user(GaimConversation *conv, const char *old_name, |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4713 const char *new_name) |
| 4359 | 4714 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4715 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4716 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4717 GaimGtkChatPane *gtkchat; |
| 4359 | 4718 GtkTreeIter iter; |
| 4719 GtkTreeModel *model; | |
| 4720 GList *names; | |
| 4721 int pos; | |
| 4722 int f = 1; | |
| 4723 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4724 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4725 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4726 gtkchat = gtkconv->u.chat; | |
| 4727 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4728 for (names = gaim_conv_chat_get_users(chat); |
| 4359 | 4729 names != NULL; |
| 4730 names = names->next) { | |
| 4731 | |
| 4732 char *u = (char *)names->data; | |
| 4733 | |
| 4793 | 4734 if (!gaim_utf8_strcasecmp(u, old_name)) { |
| 4359 | 4735 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
| 4736 | |
| 4737 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
| 4738 break; | |
| 4739 | |
| 4740 while (f != 0) { | |
| 4741 char *val; | |
| 4742 | |
| 4743 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
| 4744 | |
| 4793 | 4745 if (!gaim_utf8_strcasecmp(old_name, val)) { |
| 4359 | 4746 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 4640 | 4747 break; |
| 4748 } | |
| 4359 | 4749 |
| 4750 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
| 4751 | |
| 4752 g_free(val); | |
| 4753 } | |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
4754 |
| 4359 | 4755 break; |
| 4756 } | |
| 4757 } | |
| 4758 | |
| 4759 if (!names) | |
| 4760 return; | |
| 4761 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4762 pos = g_list_index(gaim_conv_chat_get_users(chat), new_name); |
| 4359 | 4763 |
| 4764 add_chat_buddy_common(conv, new_name, pos); | |
| 4765 } | |
| 4766 | |
| 4767 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4768 gaim_gtkconv_chat_remove_user(GaimConversation *conv, const char *user) |
| 4359 | 4769 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4770 GaimConvChat *chat; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4771 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4772 GaimGtkChatPane *gtkchat; |
| 4359 | 4773 GtkTreeIter iter; |
| 4774 GtkTreeModel *model; | |
| 4775 GList *names; | |
| 4776 char tmp[BUF_LONG]; | |
| 4777 int num_users; | |
| 4778 int f = 1; | |
| 4779 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4780 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 4781 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4782 gtkchat = gtkconv->u.chat; | |
| 4783 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4784 num_users = g_list_length(gaim_conv_chat_get_users(chat)) - 1; |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4785 |
|
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4786 for (names = gaim_conv_chat_get_users(chat); |
| 4359 | 4787 names != NULL; |
| 4788 names = names->next) { | |
| 4789 | |
| 4790 char *u = (char *)names->data; | |
| 4791 | |
| 4793 | 4792 if (!gaim_utf8_strcasecmp(u, user)) { |
| 4359 | 4793 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
| 4794 | |
| 4795 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) | |
| 4796 break; | |
| 4797 | |
| 4798 while (f != 0) { | |
| 4799 char *val; | |
| 4800 | |
| 4801 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &val, -1); | |
| 4802 | |
| 4793 | 4803 if (!gaim_utf8_strcasecmp(user, val)) |
| 4359 | 4804 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 4805 | |
| 4806 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); | |
| 4807 | |
| 4808 g_free(val); | |
| 4809 } | |
| 4810 | |
| 4811 break; | |
| 4812 } | |
| 4813 } | |
| 4814 | |
| 4815 if (names == NULL) | |
| 4816 return; | |
| 4817 | |
| 4818 g_snprintf(tmp, sizeof(tmp), | |
| 4819 ngettext("%d person in room", "%d people in room", | |
| 4820 num_users), num_users); | |
| 4821 | |
| 4822 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); | |
| 4823 | |
| 4824 if (gtkconv->make_sound) | |
| 4561 | 4825 gaim_sound_play_event(GAIM_SOUND_CHAT_LEAVE); |
| 4359 | 4826 } |
| 4827 | |
| 4828 static void | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4829 gaim_gtkconv_chat_remove_users(GaimConversation *conv, GList *users) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4830 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4831 GaimConvChat *chat; |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4832 GaimGtkConversation *gtkconv; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4833 GaimGtkChatPane *gtkchat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4834 GtkTreeIter iter; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4835 GtkTreeModel *model; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4836 GList *names = NULL; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4837 GList *l; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4838 char tmp[BUF_LONG]; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4839 int num_users; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4840 int f = 1; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4841 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4842 chat = GAIM_CONV_CHAT(conv); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4843 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4844 gtkchat = gtkconv->u.chat; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4845 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4846 num_users = g_list_length(gaim_conv_chat_get_users(chat)) - |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4847 g_list_length(users); |
|
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 for (l = users; l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4850 for (names = gaim_conv_chat_get_users(chat); |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4851 names != NULL; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4852 names = names->next) { |
|
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 char *u = (char *)names->data; |
|
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 if (!gaim_utf8_strcasecmp(u, (char *)l->data)) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4857 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list)); |
|
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 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4860 &iter)) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4861 break; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4862 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4863 while (f != 0) { |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4864 char *val; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4865 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4866 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4867 1, &val, -1); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4868 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4869 if (!gaim_utf8_strcasecmp((char *)l->data, val)) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4870 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
|
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 f = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4873 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4874 g_free(val); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4875 } |
| 7431 | 4876 |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4877 break; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4878 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4879 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4880 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4881 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4882 if (names == NULL) |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4883 return; |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4884 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4885 g_snprintf(tmp, sizeof(tmp), |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4886 ngettext("%d person in room", "%d people in room", |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4887 num_users), num_users); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4888 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4889 gtk_label_set_text(GTK_LABEL(gtkchat->count), tmp); |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4890 } |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4891 |
|
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
4892 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4893 gaim_gtkconv_set_title(GaimConversation *conv, const char *title) |
| 4359 | 4894 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4895 GaimGtkConversation *gtkconv; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4896 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4897 GaimGtkWindow *gtkwin; |
| 4681 | 4898 |
| 4899 win = gaim_conversation_get_window(conv); | |
| 4900 gtkwin = GAIM_GTK_WINDOW(win); | |
| 4359 | 4901 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4902 | |
| 4903 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); | |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
4904 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4905 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4906 if(conv == gaim_conv_window_get_active_conversation(win)) |
| 4681 | 4907 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); |
| 4359 | 4908 } |
| 4909 | |
| 4910 static void | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4911 update_tab_icon(GaimConversation *conv) |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4912 { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4913 GaimGtkConversation *gtkconv; |
| 7146 | 4914 GaimConvWindow *win = gaim_conversation_get_window(conv); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4915 GaimAccount *account; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4916 const char *name; |
| 7008 | 4917 GdkPixbuf *status = NULL; |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4918 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4919 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4920 name = gaim_conversation_get_name(conv); |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4921 account = gaim_conversation_get_account(conv); |
| 6440 | 4922 |
| 7143 | 4923 status = get_tab_icon(conv); |
| 7008 | 4924 |
| 4925 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); | |
| 4926 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); | |
| 4927 | |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
4928 if (gaim_conv_window_get_active_conversation(win) == conv && gtkconv->u.im->anim == NULL) |
| 7146 | 4929 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status); |
| 4930 | |
| 7008 | 4931 if(status) |
| 4932 g_object_unref(status); | |
| 7146 | 4933 |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4934 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4935 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
4936 static void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4937 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) |
| 4359 | 4938 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4939 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4940 GaimGtkWindow *gtkwin; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4941 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
4942 GaimGtkChatPane *gtkchat; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4943 GaimConvChat *chat; |
| 4359 | 4944 |
| 4945 win = gaim_conversation_get_window(conv); | |
| 4736 | 4946 gtkwin = GAIM_GTK_WINDOW(win); |
| 4359 | 4947 gtkconv = GAIM_GTK_CONVERSATION(conv); |
| 4948 | |
| 4491 | 4949 if (type == GAIM_CONV_UPDATE_ACCOUNT) { |
| 4359 | 4950 gaim_conversation_autoset_title(conv); |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4951 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4952 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4953 gaim_gtkconv_update_buddy_icon(conv); |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
4954 |
| 4359 | 4955 gaim_gtkconv_update_buttons_by_protocol(conv); |
| 4956 | |
| 4685 | 4957 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
| 4359 | 4958 |
| 4959 smiley_themeize(gtkconv->imhtml); | |
| 6394 | 4960 |
| 6395 | 4961 update_tab_icon(conv); |
| 4359 | 4962 } |
| 4963 else if (type == GAIM_CONV_UPDATE_TYPING || | |
| 4964 type == GAIM_CONV_UPDATE_UNSEEN) { | |
| 4965 GtkStyle *style; | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4966 GaimConvIm *im = NULL; |
| 4359 | 4967 |
| 4736 | 4968 |
| 4359 | 4969 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4970 im = GAIM_CONV_IM(conv); |
| 4359 | 4971 |
| 4972 style = gtk_style_new(); | |
| 4973 | |
| 4974 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) | |
| 4975 gtk_widget_realize(gtkconv->tab_label); | |
| 4976 | |
| 4757 | 4977 pango_font_description_free(style->font_desc); |
| 4635 | 4978 style->font_desc = pango_font_description_copy( |
| 4979 gtk_widget_get_style(gtkconv->tab_label)->font_desc); | |
| 4359 | 4980 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4981 if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPING) { |
| 4577 | 4982 style->fg[GTK_STATE_NORMAL].red = 0x4646; |
| 4983 style->fg[GTK_STATE_NORMAL].green = 0xA0A0; | |
| 4984 style->fg[GTK_STATE_NORMAL].blue = 0x4646; | |
| 4985 style->fg[GTK_STATE_ACTIVE] = style->fg[GTK_STATE_NORMAL]; | |
| 4359 | 4986 } |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
4987 else if (im != NULL && gaim_conv_im_get_typing_state(im) == GAIM_TYPED) { |
| 4577 | 4988 style->fg[GTK_STATE_NORMAL].red = 0xD1D1; |
| 4989 style->fg[GTK_STATE_NORMAL].green = 0x9494; | |
| 4990 style->fg[GTK_STATE_NORMAL].blue = 0x0C0C; | |
| 4991 style->fg[GTK_STATE_ACTIVE] = style->fg[GTK_STATE_NORMAL]; | |
| 4359 | 4992 } |
| 4993 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_NICK) { | |
| 4577 | 4994 style->fg[GTK_STATE_ACTIVE].red = 0x3131; |
| 4995 style->fg[GTK_STATE_ACTIVE].green = 0x4E4E; | |
| 4996 style->fg[GTK_STATE_ACTIVE].blue = 0x6C6C; | |
| 4578 | 4997 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE]; |
| 4359 | 4998 } |
|
6405
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
4999 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_EVENT) { |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
5000 style->fg[GTK_STATE_ACTIVE].red = 0x8686;; |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
5001 style->fg[GTK_STATE_ACTIVE].green = 0x8282; |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
5002 style->fg[GTK_STATE_ACTIVE].blue = 0x7272; |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
5003 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE]; |
|
96de6d9eb422
[gaim-migrate @ 6910]
Christian Hammond <chipx86@chipx86.com>
parents:
6401
diff
changeset
|
5004 } |
| 4359 | 5005 else if (gaim_conversation_get_unseen(conv) == GAIM_UNSEEN_TEXT) { |
| 4577 | 5006 style->fg[GTK_STATE_ACTIVE].red = 0xDFDF; |
| 5007 style->fg[GTK_STATE_ACTIVE].green = 0x4242; | |
| 5008 style->fg[GTK_STATE_ACTIVE].blue = 0x1E1E; | |
| 4578 | 5009 style->fg[GTK_STATE_NORMAL] = style->fg[GTK_STATE_ACTIVE]; |
| 4359 | 5010 } |
| 5011 | |
| 5012 gtk_widget_set_style(gtkconv->tab_label, style); | |
| 4635 | 5013 g_object_unref(G_OBJECT(style)); |
| 4736 | 5014 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5015 if(conv == gaim_conv_window_get_active_conversation(win)) { |
| 4736 | 5016 update_typing_icon(conv); |
| 5017 } | |
| 5018 | |
| 4359 | 5019 } |
| 5020 else if (type == GAIM_CONV_UPDATE_TOPIC) { | |
| 7154 | 5021 const char *topic; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5022 chat = GAIM_CONV_CHAT(conv); |
| 4359 | 5023 gtkchat = gtkconv->u.chat; |
| 5024 | |
| 7154 | 5025 topic = gaim_conv_chat_get_topic(chat); |
| 5026 | |
| 5027 gtk_entry_set_text(GTK_ENTRY(gtkchat->topic_text),topic); | |
| 5028 gtk_tooltips_set_tip(gtkconv->tooltips, gtkchat->topic_text, | |
| 5029 topic, NULL); | |
| 4359 | 5030 } |
| 5031 else if (type == GAIM_CONV_ACCOUNT_ONLINE || | |
| 5032 type == GAIM_CONV_ACCOUNT_OFFLINE) { | |
| 5033 | |
| 7476 | 5034 gaim_gtkconv_update_buttons_by_protocol(conv); |
|
4360
c435a29370b8
[gaim-migrate @ 4626]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
5035 generate_send_as_items(win, NULL); |
| 6440 | 5036 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
| 5037 update_tab_icon(conv); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5038 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5039 else if (type == GAIM_CONV_UPDATE_AWAY) { |
| 6440 | 5040 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) |
| 5041 update_tab_icon(conv); | |
| 4359 | 5042 } |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5043 else if (type == GAIM_CONV_UPDATE_ADD || |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5044 type == GAIM_CONV_UPDATE_REMOVE) { |
| 4736 | 5045 |
|
4397
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
5046 update_convo_add_button(conv); |
|
ce3a0eba91ef
[gaim-migrate @ 4666]
Christian Hammond <chipx86@chipx86.com>
parents:
4387
diff
changeset
|
5047 } |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5048 else if (type == GAIM_CONV_UPDATE_ICON) |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5049 { |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5050 gaim_gtkconv_update_buddy_icon(conv); |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5051 } |
| 4359 | 5052 } |
| 5053 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5054 static GaimConversationUiOps conversation_ui_ops = |
| 4359 | 5055 { |
| 5056 gaim_gtkconv_destroy, /* destroy_conversation */ | |
| 5057 gaim_gtkconv_write_chat, /* write_chat */ | |
| 5058 gaim_gtkconv_write_im, /* write_im */ | |
| 5059 gaim_gtkconv_write_conv, /* write_conv */ | |
| 5060 gaim_gtkconv_chat_add_user, /* chat_add_user */ | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5061 gaim_gtkconv_chat_add_users, /* chat_add_users */ |
| 4359 | 5062 gaim_gtkconv_chat_rename_user, /* chat_rename_user */ |
| 5063 gaim_gtkconv_chat_remove_user, /* chat_remove_user */ | |
|
6407
ba0b99a72be2
[gaim-migrate @ 6913]
Christian Hammond <chipx86@chipx86.com>
parents:
6405
diff
changeset
|
5064 gaim_gtkconv_chat_remove_users, /* chat_remove_users */ |
| 4359 | 5065 gaim_gtkconv_set_title, /* set_title */ |
| 5066 NULL, /* update_progress */ | |
| 5067 gaim_gtkconv_updated /* updated */ | |
| 5068 }; | |
| 5069 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5070 GaimConversationUiOps * |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
5071 gaim_gtk_conversations_get_conv_ui_ops(void) |
| 4359 | 5072 { |
|
4465
6e37eb000b7a
[gaim-migrate @ 4740]
Christian Hammond <chipx86@chipx86.com>
parents:
4454
diff
changeset
|
5073 return &conversation_ui_ops; |
| 4359 | 5074 } |
| 5075 | |
| 5076 /************************************************************************** | |
| 5077 * Public conversation utility functions | |
| 5078 **************************************************************************/ | |
| 5079 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5080 remove_icon(GaimGtkConversation *gtkconv) |
| 4359 | 5081 { |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5082 g_return_if_fail(gtkconv != NULL); |
| 4359 | 5083 |
| 5084 if (gtkconv->u.im->icon != NULL) | |
| 5085 gtk_container_remove(GTK_CONTAINER(gtkconv->bbox), | |
| 5086 gtkconv->u.im->icon->parent->parent); | |
| 5087 | |
| 5088 if (gtkconv->u.im->anim != NULL) | |
| 4793 | 5089 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); |
| 4359 | 5090 |
| 5091 if (gtkconv->u.im->icon_timer != 0) | |
| 5092 g_source_remove(gtkconv->u.im->icon_timer); | |
| 5093 | |
| 5094 if (gtkconv->u.im->iter != NULL) | |
| 5095 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 5096 | |
| 5097 gtkconv->u.im->icon_timer = 0; | |
| 5098 gtkconv->u.im->icon = NULL; | |
| 5099 gtkconv->u.im->anim = NULL; | |
| 5100 gtkconv->u.im->iter = NULL; | |
| 5101 } | |
| 5102 | |
| 5103 static gboolean | |
| 5104 redraw_icon(gpointer data) | |
| 5105 { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5106 GaimConversation *conv = (GaimConversation *)data; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5107 GaimGtkConversation *gtkconv; |
| 4359 | 5108 |
| 5109 GdkPixbuf *buf; | |
| 5110 GdkPixbuf *scale; | |
| 5111 GdkPixmap *pm; | |
| 5112 GdkBitmap *bm; | |
| 5113 gint delay; | |
| 5114 | |
| 5115 if (!g_list_find(gaim_get_ims(), conv)) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5116 gaim_debug(GAIM_DEBUG_WARNING, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5117 "Conversation not found in redraw_icon. I think this " |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5118 "is a bug.\n"); |
| 4359 | 5119 return FALSE; |
| 5120 } | |
| 5121 | |
| 5122 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5123 | |
| 5124 gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL); | |
| 5125 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
| 5126 | |
| 5127 scale = gdk_pixbuf_scale_simple(buf, | |
| 5128 MAX(gdk_pixbuf_get_width(buf) * SCALE(gtkconv->u.im->anim) / | |
| 5129 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
| 5130 MAX(gdk_pixbuf_get_height(buf) * SCALE(gtkconv->u.im->anim) / | |
| 5131 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
| 5132 GDK_INTERP_NEAREST); | |
| 5133 | |
| 5134 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 4793 | 5135 g_object_unref(G_OBJECT(scale)); |
| 4635 | 5136 gtk_image_set_from_pixmap(GTK_IMAGE(gtkconv->u.im->icon), pm, bm); |
| 4793 | 5137 g_object_unref(G_OBJECT(pm)); |
| 4359 | 5138 gtk_widget_queue_draw(gtkconv->u.im->icon); |
| 5139 | |
| 5140 if (bm) | |
| 4793 | 5141 g_object_unref(G_OBJECT(bm)); |
| 4359 | 5142 |
| 5143 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; | |
| 5144 | |
| 5145 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, conv); | |
| 5146 | |
| 5147 return FALSE; | |
| 5148 } | |
| 5149 | |
| 5150 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5151 start_anim(GtkObject *obj, GaimConversation *conv) |
| 4359 | 5152 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5153 GaimGtkConversation *gtkconv; |
| 4359 | 5154 int delay; |
| 5155 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5156 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5157 return; |
| 5158 | |
| 5159 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5160 | |
| 6016 | 5161 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) |
| 5162 return; | |
| 5163 | |
| 4359 | 5164 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter) / 10; |
| 5165 | |
| 5166 if (gtkconv->u.im->anim) | |
| 5167 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, | |
| 5168 conv); | |
| 5169 } | |
| 5170 | |
| 5171 static void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5172 stop_anim(GtkObject *obj, GaimConversation *conv) |
| 4359 | 5173 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5174 GaimGtkConversation *gtkconv; |
| 4359 | 5175 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5176 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5177 return; |
| 5178 | |
| 5179 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5180 | |
| 5181 if (gtkconv->u.im->icon_timer != 0) | |
| 5182 g_source_remove(gtkconv->u.im->icon_timer); | |
| 5183 | |
| 5184 gtkconv->u.im->icon_timer = 0; | |
| 5185 } | |
| 5186 | |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5187 static void |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5188 toggle_icon_animate_cb(GtkWidget *w, GaimConversation *conv) |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5189 { |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5190 if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))) |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5191 start_anim(NULL, conv); |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5192 else |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5193 stop_anim(NULL, conv); |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5194 } |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5195 |
| 4359 | 5196 static gboolean |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5197 icon_menu(GtkObject *obj, GdkEventButton *e, GaimConversation *conv) |
| 4359 | 5198 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5199 GaimGtkConversation *gtkconv; |
| 4359 | 5200 static GtkWidget *menu = NULL; |
| 5201 GtkWidget *button; | |
| 5202 | |
| 5203 if (e->button != 3 || e->type != GDK_BUTTON_PRESS) | |
| 5204 return FALSE; | |
| 5205 | |
| 5206 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5207 | |
| 5208 /* | |
| 5209 * If a menu already exists, destroy it before creating a new one, | |
| 5210 * thus freeing-up the memory it occupied. | |
| 5211 */ | |
| 5212 if (menu != NULL) | |
| 5213 gtk_widget_destroy(menu); | |
| 5214 | |
| 5215 menu = gtk_menu_new(); | |
| 5216 | |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5217 if (gtkconv->u.im->anim && |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5218 !(gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim))) |
| 4359 | 5219 { |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5220 gaim_new_check_item(menu, _("Animate"), |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5221 G_CALLBACK(toggle_icon_animate_cb), conv, |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5222 gtkconv->u.im->icon_timer); |
| 4359 | 5223 } |
| 5224 | |
| 5225 button = gtk_menu_item_new_with_label(_("Hide Icon")); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5226 g_signal_connect_swapped(G_OBJECT(button), "activate", |
|
4515
9b9737a00a96
[gaim-migrate @ 4793]
Christian Hammond <chipx86@chipx86.com>
parents:
4513
diff
changeset
|
5227 G_CALLBACK(remove_icon), gtkconv); |
| 4359 | 5228 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
| 5229 gtk_widget_show(button); | |
| 5230 | |
|
7300
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5231 gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS, |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5232 G_CALLBACK(gaim_gtk_save_icon_dialog), conv, |
|
41bbe5534441
[gaim-migrate @ 7884]
Christian Hammond <chipx86@chipx86.com>
parents:
7298
diff
changeset
|
5233 0, 0, NULL); |
| 4359 | 5234 |
| 5235 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); | |
| 5236 | |
| 5237 return TRUE; | |
| 5238 } | |
| 5239 | |
| 5240 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5241 gaim_gtkconv_update_buddy_icon(GaimConversation *conv) |
| 4359 | 5242 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5243 GaimGtkConversation *gtkconv; |
| 7143 | 5244 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); |
| 4359 | 5245 |
| 5246 char filename[256]; | |
| 5247 FILE *file; | |
| 5248 GError *err = NULL; | |
|
5462
8355eeeb52a3
[gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5249 gboolean animate = TRUE; |
| 4359 | 5250 |
| 6695 | 5251 GaimBuddy *buddy; |
| 4757 | 5252 |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5253 const void *data; |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5254 size_t len; |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5255 int delay; |
| 4359 | 5256 |
| 5257 GdkPixbuf *buf; | |
| 5258 | |
| 5259 GtkWidget *event; | |
| 5260 GtkWidget *frame; | |
| 5261 GdkPixbuf *scale; | |
| 5262 GdkPixmap *pm; | |
| 5263 GdkBitmap *bm; | |
| 5264 int sf = 0; | |
| 5265 | |
|
5678
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5266 g_return_if_fail(conv != NULL); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5267 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); |
|
619bca773b2e
[gaim-migrate @ 6096]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5268 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM); |
| 4359 | 5269 |
| 5270 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5271 | |
|
5462
8355eeeb52a3
[gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5272 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
|
5273 animate = FALSE; |
|
8355eeeb52a3
[gaim-migrate @ 5853]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5274 |
| 4359 | 5275 remove_icon(gtkconv); |
| 5276 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5277 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons")) |
| 4359 | 5278 return; |
| 5279 | |
| 5280 if (gaim_conversation_get_gc(conv) == NULL) | |
| 5281 return; | |
| 5282 | |
| 4793 | 5283 if(gtkconv->u.im->anim) |
| 5284 g_object_unref(G_OBJECT(gtkconv->u.im->anim)); | |
| 5285 | |
| 4757 | 5286 if((buddy = gaim_find_buddy(gaim_conversation_get_account(conv), |
| 5287 gaim_conversation_get_name(conv))) != NULL) { | |
| 7125 | 5288 const char *file; |
| 7693 | 5289 if((file = gaim_blist_node_get_string((GaimBlistNode*)buddy, "buddy_icon"))) |
| 4757 | 5290 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(file, &err); |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5291 } |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5292 else |
|
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5293 { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5294 GaimBuddyIcon *icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5295 |
|
6877
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5296 if (icon == NULL) |
|
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5297 return; |
|
1b5b0cea6915
[gaim-migrate @ 7423]
Christian Hammond <chipx86@chipx86.com>
parents:
6846
diff
changeset
|
5298 |
|
6846
8ab95f4c9800
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6771
diff
changeset
|
5299 data = gaim_buddy_icon_get_data(icon, &len); |
| 4757 | 5300 |
| 5301 /* this is such an evil hack, i don't know why i'm even considering it. | |
| 5302 * we'll do it differently when gdk-pixbuf-loader isn't leaky anymore. */ | |
| 5303 g_snprintf(filename, sizeof(filename), | |
| 5304 "%s" G_DIR_SEPARATOR_S "gaimicon-%s.%d", | |
| 5305 g_get_tmp_dir(), gaim_conversation_get_name(conv), getpid()); | |
| 5306 | |
| 5307 if (!(file = fopen(filename, "wb"))) | |
| 5308 return; | |
| 5309 | |
| 5310 fwrite(data, 1, len, file); | |
| 5311 fclose(file); | |
| 5312 | |
| 5313 gtkconv->u.im->anim = gdk_pixbuf_animation_new_from_file(filename, &err); | |
| 5314 /* make sure we remove the file as soon as possible */ | |
| 5315 unlink(filename); | |
| 5316 } | |
| 4359 | 5317 |
| 5318 if (err) { | |
|
5211
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5319 gaim_debug(GAIM_DEBUG_ERROR, "gtkconv", |
|
0241d6b6702d
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
5320 "Buddy icon error: %s\n", err->message); |
| 4359 | 5321 g_error_free(err); |
| 5322 } | |
| 5323 | |
| 5324 | |
| 5325 if (!gtkconv->u.im->anim) | |
| 5326 return; | |
| 5327 | |
| 4793 | 5328 if(gtkconv->u.im->iter) |
| 5329 g_object_unref(G_OBJECT(gtkconv->u.im->iter)); | |
| 5330 | |
| 4359 | 5331 if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) { |
| 5332 gtkconv->u.im->iter = NULL; | |
| 5333 delay = 0; | |
| 5334 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
| 5335 } else { | |
| 5336 gtkconv->u.im->iter = | |
| 5337 gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); | |
| 5338 buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); | |
| 5339 delay = gdk_pixbuf_animation_iter_get_delay_time(gtkconv->u.im->iter); | |
| 5340 delay = delay / 10; | |
| 5341 } | |
| 5342 | |
| 5343 sf = SCALE(gtkconv->u.im->anim); | |
| 5344 scale = gdk_pixbuf_scale_simple(buf, | |
| 5345 MAX(gdk_pixbuf_get_width(buf) * sf / | |
| 5346 gdk_pixbuf_animation_get_width(gtkconv->u.im->anim), 1), | |
| 5347 MAX(gdk_pixbuf_get_height(buf) * sf / | |
| 5348 gdk_pixbuf_animation_get_height(gtkconv->u.im->anim), 1), | |
| 5349 GDK_INTERP_NEAREST); | |
| 5350 | |
| 5351 if (delay) | |
| 5352 gtkconv->u.im->icon_timer = g_timeout_add(delay * 10, redraw_icon, | |
| 5353 conv); | |
| 5354 | |
| 5355 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); | |
| 4793 | 5356 g_object_unref(G_OBJECT(scale)); |
| 4359 | 5357 |
| 5358 frame = gtk_frame_new(NULL); | |
| 5359 gtk_frame_set_shadow_type(GTK_FRAME(frame), | |
| 5360 (bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN)); | |
| 5361 gtk_box_pack_start(GTK_BOX(gtkconv->bbox), frame, FALSE, FALSE, 5); | |
| 5362 gtk_box_reorder_child(GTK_BOX(gtkconv->bbox), frame, 0); | |
| 5363 gtk_widget_show(frame); | |
| 5364 | |
| 5365 event = gtk_event_box_new(); | |
| 5366 gtk_container_add(GTK_CONTAINER(frame), event); | |
|
5314
1f901484599d
[gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
5367 g_signal_connect(G_OBJECT(event), "button-press-event", |
| 4359 | 5368 G_CALLBACK(icon_menu), conv); |
| 5369 gtk_widget_show(event); | |
| 5370 | |
| 4635 | 5371 gtkconv->u.im->icon = gtk_image_new_from_pixmap(pm, bm); |
| 4359 | 5372 gtk_widget_set_size_request(gtkconv->u.im->icon, sf, sf); |
| 5373 gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon); | |
| 5374 gtk_widget_show(gtkconv->u.im->icon); | |
| 5375 | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5376 if (!animate || |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5377 !gaim_prefs_get_bool("/gaim/gtk/conversations/im/animate_buddy_icons")) { |
| 4359 | 5378 stop_anim(NULL, conv); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5379 } |
| 4359 | 5380 |
| 4793 | 5381 g_object_unref(G_OBJECT(pm)); |
| 4359 | 5382 |
| 5383 if (bm) | |
| 4793 | 5384 g_object_unref(G_OBJECT(bm)); |
| 7143 | 5385 |
| 5386 /* The buddy icon code needs badly to be fixed. */ | |
| 5387 buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | |
| 5388 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), buf); | |
| 4359 | 5389 } |
| 5390 | |
| 5391 void | |
| 5392 gaim_gtkconv_update_font_buttons(void) | |
| 5393 { | |
| 5394 GList *l; | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5395 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5396 GaimGtkConversation *gtkconv; |
| 4359 | 5397 |
| 5398 for (l = gaim_get_ims(); l != NULL; l = l->next) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5399 conv = (GaimConversation *)l->data; |
| 4359 | 5400 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5401 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5402 continue; |
| 5403 | |
| 5404 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5405 | |
| 5406 if (gtkconv->toolbar.bold != NULL) | |
| 5407 gtk_widget_set_sensitive(gtkconv->toolbar.bold, | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5408 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")); |
| 4359 | 5409 |
| 5410 if (gtkconv->toolbar.italic != NULL) | |
| 5411 gtk_widget_set_sensitive(gtkconv->toolbar.italic, | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5412 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")); |
| 4359 | 5413 |
| 5414 if (gtkconv->toolbar.underline != NULL) | |
| 5415 gtk_widget_set_sensitive(gtkconv->toolbar.underline, | |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5416 !gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")); |
| 4359 | 5417 } |
| 5418 } | |
| 5419 | |
| 5420 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5421 gaim_gtkconv_update_font_colors(GaimConversation *conv) |
| 4421 | 5422 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5423 GaimGtkConversation *gtkconv; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5424 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5425 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5426 return; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5427 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5428 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5545
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5429 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5430 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/fgcolor"), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5431 >kconv->fg_color); |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5432 |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5433 gdk_color_parse(gaim_prefs_get_string("/gaim/gtk/conversations/bgcolor"), |
|
7a64114641c3
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5484
diff
changeset
|
5434 >kconv->bg_color); |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5435 } |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5436 |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5437 void |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5438 gaim_gtkconv_update_font_face(GaimConversation *conv) |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5439 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5440 GaimGtkConversation *gtkconv; |
| 6141 | 5441 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5442 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5443 return; |
| 6141 | 5444 |
|
4438
2054d8429925
[gaim-migrate @ 4713]
Christian Hammond <chipx86@chipx86.com>
parents:
4421
diff
changeset
|
5445 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5551
51699de873af
[gaim-migrate @ 5952]
Christian Hammond <chipx86@chipx86.com>
parents:
5550
diff
changeset
|
5446 |
| 6141 | 5447 strncpy(gtkconv->fontface, |
| 5448 gaim_prefs_get_string("/gaim/gtk/conversations/font_face"), | |
| 5449 sizeof(gtkconv->fontface)); | |
| 4421 | 5450 } |
| 5451 | |
| 5452 void | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5453 gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv) |
| 4359 | 5454 { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5455 GaimPluginProtocolInfo *prpl_info = NULL; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5456 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5457 GaimGtkWindow *gtkwin = NULL; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5458 GaimGtkConversation *gtkconv; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5551
diff
changeset
|
5459 GaimConnection *gc; |
| 4359 | 5460 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5461 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
| 4359 | 5462 return; |
| 5463 | |
| 5464 gc = gaim_conversation_get_gc(conv); | |
| 5465 win = gaim_conversation_get_window(conv); | |
| 5466 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
| 5467 | |
| 5468 if (win != NULL) | |
| 5469 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5470 | |
| 5471 if (gc == NULL) { | |
| 5472 gtk_widget_set_sensitive(gtkconv->send, FALSE); | |
| 5473 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5474 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv) { |
| 4359 | 5475 gtk_widget_set_sensitive(gtkwin->menu.insert_link, FALSE); |
| 5476 } | |
| 5477 } | |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
5478 else { |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5479 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5480 |
| 4674 | 5481 gtk_widget_set_sensitive(gtkconv->send, TRUE); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5482 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5483 if (win != NULL) |
|
4365
6e96ced6fb78
[gaim-migrate @ 4631]
Christian Hammond <chipx86@chipx86.com>
parents:
4364
diff
changeset
|
5484 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE); |
| 6629 | 5485 |
| 5486 gtk_widget_set_sensitive(gtkconv->toolbar.bgcolor, | |
| 5487 !(gc->flags & GAIM_CONNECTION_NO_BGCOLOR)); | |
|
4364
fa56829b9587
[gaim-migrate @ 4630]
Christian Hammond <chipx86@chipx86.com>
parents:
4363
diff
changeset
|
5488 } |
| 4359 | 5489 |
| 5490 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | |
| 5491 if (gc == NULL) { | |
| 5492 gtk_widget_set_sensitive(gtkconv->info, FALSE); | |
| 5493 gtk_widget_set_sensitive(gtkconv->u.im->warn, FALSE); | |
| 5494 gtk_widget_set_sensitive(gtkconv->u.im->block, FALSE); | |
| 5495 gtk_widget_set_sensitive(gtkconv->u.im->add, FALSE); | |
| 5496 | |
| 5497 if (win != NULL && | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5498 gaim_conv_window_get_active_conversation(win) == conv) { |
| 4359 | 5499 |
| 5500 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); | |
| 5501 } | |
| 5502 | |
| 5503 return; | |
| 5504 } | |
| 5505 | |
| 5506 gtk_widget_set_sensitive(gtkconv->info, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5507 (prpl_info->get_info != NULL)); |
| 4359 | 5508 |
| 5509 gtk_widget_set_sensitive(gtkconv->toolbar.image, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5510 (prpl_info->options & OPT_PROTO_IM_IMAGE)); |
| 4359 | 5511 |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5512 if (win != NULL && gaim_conv_window_get_active_conversation(win) == conv) { |
| 4359 | 5513 gtk_widget_set_sensitive(gtkwin->menu.insert_image, |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5514 (prpl_info->options & OPT_PROTO_IM_IMAGE)); |
| 4359 | 5515 } |
| 5516 | |
| 5517 gtk_widget_set_sensitive(gtkconv->u.im->warn, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5518 (prpl_info->warn != NULL)); |
| 4359 | 5519 |
| 5520 gtk_widget_set_sensitive(gtkconv->u.im->block, | |
| 6760 | 5521 (prpl_info->add_deny != NULL)); |
| 4359 | 5522 |
| 5523 update_convo_add_button(conv); | |
| 5524 } | |
| 5525 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
| 5526 if (gc == NULL) { | |
|
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, FALSE); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5529 |
| 4359 | 5530 gtk_widget_set_sensitive(gtkconv->u.chat->invite, FALSE); |
| 5531 | |
| 5532 return; | |
| 5533 } | |
| 5534 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5535 gtk_widget_set_sensitive(gtkconv->send, (prpl_info->chat_send != NULL)); |
| 4359 | 5536 |
| 5537 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); | |
| 5538 /* gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE); */ | |
| 5539 | |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5540 if (gtkconv->u.chat->whisper != NULL) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5541 gtk_widget_set_sensitive(gtkconv->u.chat->whisper, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5542 (prpl_info->chat_whisper != NULL)); |
| 4359 | 5543 |
| 5544 gtk_widget_set_sensitive(gtkconv->u.chat->invite, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5204
diff
changeset
|
5545 (prpl_info->chat_invite != NULL)); |
| 4359 | 5546 } |
| 5547 } | |
| 5548 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5549 GaimConvWindow * |
| 4359 | 5550 gaim_gtkwin_get_at_xy(int x, int y) |
| 5551 { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5552 GaimConvWindow *win = NULL; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5553 GaimGtkWindow *gtkwin; |
| 4359 | 5554 GdkWindow *gdkwin; |
| 5555 GList *l; | |
| 5556 | |
| 5557 gdkwin = gdk_window_at_pointer(&x, &y); | |
| 5558 | |
| 5559 if (gdkwin) | |
| 5560 gdkwin = gdk_window_get_toplevel(gdkwin); | |
| 5561 | |
| 5562 for (l = gaim_get_windows(); l != NULL; l = l->next) { | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5563 win = (GaimConvWindow *)l->data; |
| 4359 | 5564 |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5565 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5566 continue; |
| 5567 | |
| 5568 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5569 | |
| 5570 if (gdkwin == gtkwin->window->window) | |
| 5571 return win; | |
| 5572 } | |
| 5573 | |
| 5574 return NULL; | |
| 5575 } | |
| 5576 | |
| 5577 int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5578 gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y) |
| 4359 | 5579 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5580 GaimGtkWindow *gtkwin; |
| 4359 | 5581 GList *l; |
| 5582 gint nb_x, nb_y, x_rel, y_rel; | |
| 5583 GtkNotebook *notebook; | |
| 5584 GtkWidget *tab; | |
| 5585 gint i, page_num = 0; | |
| 5586 gboolean first_visible = TRUE; | |
| 5587 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5588 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5589 return -1; |
| 5590 | |
| 5591 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5592 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 5593 | |
| 5594 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 5595 x_rel = x - nb_x; | |
| 5596 y_rel = y - nb_y; | |
| 5597 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5598 for (l = gaim_conv_window_get_conversations(win), i = 0; |
| 4359 | 5599 l != NULL; |
| 5600 l = l->next, i++) { | |
| 5601 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5602 GaimConversation *conv = l->data; |
| 4359 | 5603 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
| 5604 | |
| 5605 if (!GTK_WIDGET_MAPPED(tab)) | |
| 5606 continue; | |
| 5607 | |
| 5608 if (first_visible) { | |
| 5609 first_visible = FALSE; | |
| 5610 | |
| 5611 if (x_rel < tab->allocation.x) x_rel = tab->allocation.x; | |
| 5612 if (y_rel < tab->allocation.y) y_rel = tab->allocation.y; | |
| 5613 } | |
| 5614 | |
| 5615 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
| 5616 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
| 5617 | |
| 5618 if (tab->allocation.x <= x_rel) { | |
| 5619 if (tab->allocation.x + tab->allocation.width <= x_rel) | |
| 5620 page_num = i + 1; | |
| 5621 else | |
| 5622 page_num = i; | |
| 5623 } | |
| 5624 else | |
| 5625 break; | |
| 5626 } | |
| 5627 else { | |
| 5628 if (tab->allocation.y <= y_rel) { | |
| 5629 if (tab->allocation.y + tab->allocation.height <= y_rel) | |
| 5630 page_num = i + 1; | |
| 5631 else | |
| 5632 page_num = i; | |
| 5633 } | |
| 5634 else | |
| 5635 break; | |
| 5636 } | |
| 5637 } | |
| 5638 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5639 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
| 4359 | 5640 return -1; |
| 5641 | |
| 5642 return page_num; | |
| 5643 } | |
| 5644 | |
| 5645 int | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5646 gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y) |
| 4359 | 5647 { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5648 GaimGtkWindow *gtkwin; |
| 4359 | 5649 GList *l; |
| 5650 gint nb_x, nb_y, x_rel, y_rel; | |
| 5651 GtkNotebook *notebook; | |
| 5652 GtkWidget *tab; | |
| 5653 gint i, page_num = 0; | |
| 5654 | |
|
4398
a8249a5250b6
[gaim-migrate @ 4667]
Christian Hammond <chipx86@chipx86.com>
parents:
4397
diff
changeset
|
5655 if (!GAIM_IS_GTK_WINDOW(win)) |
| 4359 | 5656 return -1; |
| 5657 | |
| 5658 gtkwin = GAIM_GTK_WINDOW(win); | |
| 5659 notebook = GTK_NOTEBOOK(gtkwin->notebook); | |
| 5660 | |
| 5661 gdk_window_get_origin(gtkwin->notebook->window, &nb_x, &nb_y); | |
| 5662 x_rel = x - nb_x; | |
| 5663 y_rel = y - nb_y; | |
| 5664 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5665 for (l = gaim_conv_window_get_conversations(win), i = 0; |
| 4359 | 5666 l != NULL; |
| 5667 l = l->next, i++) { | |
| 5668 | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5669 GaimConversation *conv = l->data; |
| 4359 | 5670 tab = GAIM_GTK_CONVERSATION(conv)->tab_label; |
| 5671 | |
| 5672 if (!GTK_WIDGET_MAPPED(tab)) | |
| 5673 continue; | |
| 5674 | |
| 5675 if (gtk_notebook_get_tab_pos(notebook) == GTK_POS_TOP || | |
| 5676 gtk_notebook_get_tab_pos(notebook) == GTK_POS_BOTTOM) { | |
| 5677 | |
| 5678 if (tab->allocation.x <= x_rel) { | |
| 5679 if (tab->allocation.x + (tab->allocation.width / 2) <= x_rel) | |
| 5680 page_num = i + 1; | |
| 5681 else | |
| 5682 page_num = i; | |
| 5683 } | |
| 5684 else | |
| 5685 break; | |
| 5686 } | |
| 5687 else { | |
| 5688 if (tab->allocation.y <= y_rel) { | |
| 5689 if (tab->allocation.y + (tab->allocation.height / 2) <= y_rel) | |
| 5690 page_num = i + 1; | |
| 5691 else | |
| 5692 page_num = i; | |
| 5693 } | |
| 5694 else | |
| 5695 break; | |
| 5696 } | |
| 5697 } | |
| 5698 | |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5699 if (i == gaim_conv_window_get_conversation_count(win) + 1) |
| 4359 | 5700 return -1; |
| 5701 | |
| 5702 return page_num; | |
| 5703 } | |
|
4940
3708545afe42
[gaim-migrate @ 5274]
Christian Hammond <chipx86@chipx86.com>
parents:
4939
diff
changeset
|
5704 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5705 static void |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5706 escape_closes_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5707 gpointer data) |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5708 { |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5709 if (value) |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5710 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5711 GDK_Escape, 0, TRUE); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5712 else |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5713 gtk_accel_map_change_entry(N_("<main>/Conversation/Close"), |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5714 GDK_W, GDK_CONTROL_MASK, TRUE); |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5715 } |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5716 |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
5717 static void |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5718 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
|
5719 gpointer data) |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5720 { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5721 GList *l; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5722 GaimConversation *conv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5723 GaimGtkConversation *gtkconv; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5724 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5725 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5726 conv = (GaimConversation *)l->data; |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5727 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5728 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5729 continue; |
|
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 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5732 |
| 6440 | 5733 if (value) { |
| 5734 update_tab_icon(conv); | |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5735 gtk_widget_show(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5736 gtk_widget_show(gtkconv->menu_icon); |
| 6440 | 5737 } |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5738 else { |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5739 gtk_widget_hide(gtkconv->icon); |
|
6771
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5740 gtk_widget_hide(gtkconv->menu_icon); |
|
8eebba08b44b
[gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents:
6760
diff
changeset
|
5741 } |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5742 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5743 } |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5744 |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
5745 static void |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5746 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
|
5747 gpointer data) |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5748 { |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5749 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5750 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5751 GaimGtkConversation *gtkconv; |
|
5673
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 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5754 conv = (GaimConversation *)l->data; |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5755 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5756 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5757 continue; |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5758 |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5759 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5760 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5761 if (value) |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5762 gtk_widget_show(gtkconv->close); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5763 else |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5764 gtk_widget_hide(gtkconv->close); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5765 } |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5766 } |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
5767 |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5768 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5769 show_timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5770 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5771 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5772 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5773 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5774 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5775 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5776 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5777 conv = (GaimConversation *)l->data; |
|
5674
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 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5780 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5781 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5782 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5783 |
| 7386 | 5784 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value)); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5785 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5786 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5787 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5788 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5789 spellcheck_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5790 gpointer data) |
|
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 #ifdef USE_GTKSPELL |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5793 GList *cl; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5794 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5795 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5796 GtkSpell *spell; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5797 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5798 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5799 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5800 conv = (GaimConversation *)cl->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5801 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5802 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5803 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5804 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5805 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5806 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5807 if (value) |
|
7538
357eb1c39b72
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7476
diff
changeset
|
5808 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5809 else { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5810 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(gtkconv->entry)); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5811 gtkspell_detach(spell); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5812 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5813 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5814 #endif |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5815 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5816 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5817 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5818 show_smileys_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5819 gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5820 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5821 GList *cl; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5822 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5823 GaimGtkConversation *gtkconv; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5824 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5825 for (cl = gaim_get_conversations(); cl != NULL; cl = cl->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5826 conv = (GaimConversation *)cl->data; |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5827 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5828 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5829 continue; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5830 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5831 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5832 |
| 7386 | 5833 gtk_imhtml_show_smileys(GTK_IMHTML(gtkconv->imhtml), (gboolean)GPOINTER_TO_INT(value)); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5834 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5835 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5836 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5837 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5838 tab_side_pref_cb(const char *name, GaimPrefType type, gpointer value, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5839 gpointer data) |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5840 { |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5841 GList *l; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5842 GtkPositionType pos; |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5843 GaimConvWindow *win; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5844 GaimGtkWindow *gtkwin; |
|
5675
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 pos = GPOINTER_TO_INT(value); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5847 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5848 for (l = gaim_get_windows(); l != NULL; l = l->next) { |
|
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7108
diff
changeset
|
5849 win = (GaimConvWindow *)l->data; |
|
5675
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 if (!GAIM_IS_GTK_WINDOW(win)) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5852 continue; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5853 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5854 gtkwin = GAIM_GTK_WINDOW(win); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5855 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5856 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5857 } |
|
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 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5860 static void |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5861 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type, |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5862 gpointer value, gpointer data) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5863 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5864 GList *l; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5865 GaimConversation *conv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5866 GaimGtkConversation *gtkconv; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5867 GaimConvWindow *win; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5868 GaimGtkWindow *gtkwin; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5869 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5870 for (l = gaim_get_conversations(); l != NULL; l = l->next) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5871 { |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5872 conv = (GaimConversation *)l->data; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5873 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5874 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5875 continue; |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5876 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5877 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5878 win = gaim_conversation_get_window(conv); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5879 gtkwin = GAIM_GTK_WINDOW(win); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5880 |
| 7386 | 5881 gtkconv->show_formatting_toolbar = (gboolean)GPOINTER_TO_INT(value); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5882 gtk_check_menu_item_set_active( |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5883 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5884 gtkconv->show_formatting_toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5885 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5886 if (gtkconv->show_formatting_toolbar) |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5887 gtk_widget_show(gtkconv->toolbar.toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5888 else |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5889 gtk_widget_hide(gtkconv->toolbar.toolbar); |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5890 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5891 } |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5892 |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
5893 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5894 im_button_type_pref_cb(const char *name, GaimPrefType type, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5895 gpointer value, gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5896 { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5897 GList *l; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5898 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5899 GaimGtkConversation *gtkconv; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5900 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5901 for (l = gaim_get_ims(); l != NULL; l = l->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5902 conv = (GaimConversation *)l->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5903 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5904 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5905 setup_im_buttons(conv, gtk_widget_get_parent(gtkconv->send)); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5906 } |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5907 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5908 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5909 static void |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5910 animate_buddy_icons_pref_cb(const char *name, GaimPrefType type, |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5911 gpointer value, gpointer data) |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5912 { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5913 GList *l; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5914 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5915 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
|
5916 return; |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5917 |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5918 if (value) { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5919 for (l = gaim_get_ims(); l != NULL; l = l->next) |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5920 start_anim(NULL, (GaimConversation *)l->data); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5921 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5922 else { |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5923 for (l = gaim_get_ims(); l != NULL; l = l->next) |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5924 stop_anim(NULL, (GaimConversation *)l->data); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5925 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5926 } |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
5927 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5928 static void |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5929 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
|
5930 gpointer data) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5931 { |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5932 GList *l; |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5933 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5934 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5935 GaimConversation *conv = l->data; |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5936 |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5937 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5938 gaim_conversation_foreach(gaim_gtkconv_update_buddy_icon); |
|
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
5939 } |
|
5675
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 |
|
5681
46d7ad0dfa26
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5680
diff
changeset
|
5942 static void |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5943 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
|
5944 gpointer data) |
|
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 GList *l; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5947 GaimConnection *g; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5948 GtkWidget *parent; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5949 GaimConversationType conv_type = GAIM_CONV_CHAT; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5950 GSList *bcs; |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5951 GaimConversation *conv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5952 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5953 GaimGtkWindow *gtkwin; |
|
5675
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 for (l = gaim_connections_get_all(); l != NULL; l = l->next) { |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5956 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5957 g = (GaimConnection *)l->data; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5958 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5959 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5675
diff
changeset
|
5960 conv = (GaimConversation *)bcs->data; |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5961 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5962 if (gaim_conversation_get_type(conv) != GAIM_CONV_CHAT) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5963 continue; |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
5964 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5965 if (!GAIM_IS_GTK_CONVERSATION(conv)) |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5966 continue; |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5967 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5968 gtkconv = GAIM_GTK_CONVERSATION(conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5969 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(conv)); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5970 parent = gtk_widget_get_parent(gtkconv->send); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5971 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5972 gtkconv->send = |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5973 gaim_gtk_change_text(_("Send"), |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5974 gtkconv->send, GAIM_STOCK_SEND, conv_type); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5975 gtkconv->u.chat->invite = |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5976 gaim_gtk_change_text(_("Invite"), |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5977 gtkconv->u.chat->invite, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5978 GAIM_STOCK_INVITE, conv_type); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5979 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5980 gtk_box_pack_end(GTK_BOX(parent), gtkconv->send, FALSE, FALSE, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5981 conv_type); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5982 gtk_box_pack_end(GTK_BOX(parent), gtkconv->u.chat->invite, |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5983 FALSE, FALSE, 0); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5984 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5985 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->send, 0); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5986 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5987 g_signal_connect(G_OBJECT(gtkconv->send), "clicked", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5988 G_CALLBACK(send_cb), conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5989 g_signal_connect(G_OBJECT(gtkconv->u.chat->invite), "clicked", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5990 G_CALLBACK(invite_cb), conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5991 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5992 gtk_button_set_relief(GTK_BUTTON(gtkconv->send), |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5993 GTK_RELIEF_NONE); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5994 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.chat->invite), |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5995 GTK_RELIEF_NONE); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5996 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5997 gaim_gtkconv_update_buttons_by_protocol(conv); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5998 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
5999 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6000 } |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6001 |
|
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6002 static void |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6003 conv_placement_pref_cb(const char *name, GaimPrefType type, |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6004 gpointer value, gpointer data) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6005 { |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6006 GaimConvPlacementFunc func; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6007 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6008 if (strcmp(name, "/gaim/gtk/conversations/placement")) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6009 return; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6010 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6011 func = gaim_conv_placement_get_fnc(value); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6012 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6013 if (func == NULL) |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6014 return; |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6015 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6016 gaim_conv_placement_set_current_func(func); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6017 } |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6018 |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6019 void |
|
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
7008
diff
changeset
|
6020 gaim_gtk_conversations_init(void) |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6021 { |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6022 /* Conversations */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6023 gaim_prefs_add_none("/gaim/gtk/conversations"); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
6024 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
|
6025 gaim_prefs_add_bool("/gaim/gtk/conversations/close_on_tabs", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6026 gaim_prefs_add_bool("/gaim/gtk/conversations/ctrl_enter_sends", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6027 gaim_prefs_add_bool("/gaim/gtk/conversations/enter_sends", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6028 gaim_prefs_add_bool("/gaim/gtk/conversations/escape_closes", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6029 gaim_prefs_add_bool("/gaim/gtk/conversations/send_bold", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6030 gaim_prefs_add_bool("/gaim/gtk/conversations/send_italic", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6031 gaim_prefs_add_bool("/gaim/gtk/conversations/send_strikethrough", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6032 gaim_prefs_add_bool("/gaim/gtk/conversations/send_underline", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6033 gaim_prefs_add_bool("/gaim/gtk/conversations/show_smileys", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6034 gaim_prefs_add_bool("/gaim/gtk/conversations/show_timestamps", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6035 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
|
6036 gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6037 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_colors", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6038 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_fonts", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6039 gaim_prefs_add_bool("/gaim/gtk/conversations/ignore_font_sizes", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6040 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_bgcolor", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6041 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_fgcolor", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6042 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6043 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6044 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6045 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE); |
|
5743
af159a5bbaa0
[gaim-migrate @ 6167]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
6046 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
6047 gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE); |
|
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6048 gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last"); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6049 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6050 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6051 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6052 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6053 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6054 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
|
6055 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6056 /* Conversations -> Chat */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6057 gaim_prefs_add_none("/gaim/gtk/conversations/chat"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6058 gaim_prefs_add_int("/gaim/gtk/conversations/chat/button_type", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6059 GAIM_BUTTON_TEXT_IMAGE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6060 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/color_nicks", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6061 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
|
6062 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
|
6063 gaim_prefs_add_bool("/gaim/gtk/conversations/chat/tab_completion", TRUE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6064 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_width", 410); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6065 gaim_prefs_add_int("/gaim/gtk/conversations/chat/default_height", 160); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6066 gaim_prefs_add_int("/gaim/gtk/conversations/chat/entry_height", 50); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6067 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6068 /* Conversations -> IM */ |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6069 gaim_prefs_add_none("/gaim/gtk/conversations/im"); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6070 gaim_prefs_add_int("/gaim/gtk/conversations/im/button_type", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6071 GAIM_BUTTON_TEXT_IMAGE); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6072 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
|
6073 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
|
6074 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
|
6075 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
|
6076 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_width", 410); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6077 gaim_prefs_add_int("/gaim/gtk/conversations/im/default_height", 160); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6078 gaim_prefs_add_int("/gaim/gtk/conversations/im/entry_height", 50); |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6079 |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6080 /* Connect callbacks. */ |
|
6398
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
6081 gaim_prefs_connect_callback("/gaim/gtk/conversations/escape_closes", |
|
c9894c0fbc6f
[gaim-migrate @ 6903]
Christian Hammond <chipx86@chipx86.com>
parents:
6395
diff
changeset
|
6082 escape_closes_pref_cb, NULL); |
|
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
6083 gaim_prefs_connect_callback("/gaim/gtk/conversations/icons_on_tabs", |
|
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
6084 icons_on_tabs_pref_cb, NULL); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6085 gaim_prefs_connect_callback("/gaim/gtk/conversations/close_on_tabs", |
|
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6086 close_on_tabs_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6087 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6088 show_smileys_pref_cb, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6089 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6090 show_timestamps_pref_cb, NULL); |
|
7326
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
6091 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar", |
|
00a9ab26d607
[gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents:
7322
diff
changeset
|
6092 show_formatting_toolbar_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6093 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6094 spellcheck_pref_cb, NULL); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6095 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6096 tab_side_pref_cb, NULL); |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6097 |
|
7561
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6098 gaim_prefs_connect_callback("/gaim/gtk/conversations/placement", |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6099 conv_placement_pref_cb, NULL); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6100 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement"); |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6101 |
|
cdfdbabd3266
[gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents:
7538
diff
changeset
|
6102 |
|
6725
e62a504c83d0
[gaim-migrate @ 7252]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
6103 |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6104 /* IM callbacks */ |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6105 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/button_type", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6106 im_button_type_pref_cb, NULL); |
|
5674
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6107 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/animate_buddy_icons", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6108 animate_buddy_icons_pref_cb, NULL); |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6109 gaim_prefs_connect_callback("/gaim/gtk/conversations/im/show_buddy_icons", |
|
2d86a5fa6fef
[gaim-migrate @ 6092]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
6110 show_buddy_icons_pref_cb, NULL); |
|
5675
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6111 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6112 |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6113 /* Chat callbacks */ |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6114 gaim_prefs_connect_callback("/gaim/gtk/conversations/chat/button_type", |
|
17e345ffeddb
[gaim-migrate @ 6093]
Christian Hammond <chipx86@chipx86.com>
parents:
5674
diff
changeset
|
6115 chat_button_type_pref_cb, NULL); |
|
5673
62f57ec16f29
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5629
diff
changeset
|
6116 } |
